
解決したと思い締め切らせていただいたのですが、
再度問題が出てきたので質問させてください。
http://qanda.rakuten.ne.jp/qa8670339.html
ベストアンサーの方法で運用し始めたのですが、コードを入力したシート(シート名:1)にだけ
エラーが出ます。
2つのセルを一度にペーストしようとすると、(例えば、C11とC12をC13とC14にコピーペースト)
実行時エラー'13': 型が一致しません。とのエラーが出ます。
解決策があれば教えて頂きたく思いますので、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
前回解答のtom04さんから返事がきたようなので書かせてもらいます。
今度の質問の
>コードを入力したシート(シート名:1)にだけエラーが出ます。2つのセルを一度にペーストしようとすると、・・・
このエラーの原因は、複数セルを選んで変更処理を行っていて、
If Target.Address = "$G$7" And Target <> "" Then
のTargetにプロパティが指定されていないからです。
ア.単一セルの場合、VBAがTagetの中身(ValueかText)で判定するのでうまくいきます。
イ.複数セルの場合、Targetという名のRangeオブジェクトに対してTarget <> ""を実行するので「型が一致しません」のエラーが出るわけです。
また、VBAの場合、
If 判定1 And 判定2 Then
の場合、判定1が成立しない時も判定2を調べに行きます。質問の場合、複数セルを操作しているので「Target.Address = "$G$7"」で弾かれますが、ある意味不必要な「Target <> ""」も実行されて、Rangeオブジェクトと「""」の比較をするので「型が一致しません」のエラーが出るわけです。
さらに、質問には、
>コードを入力したシート(シート名:1)にだけエラーが出ます。
とありますが、シート1を含む作業グループを作っていて、シート1以外で複数セルを操作するとエラーが出るはずです。また、その状態でシート1以外のセルG7を操作するとシート1のChangeイベントが実行されてしまいます。その動作が期待することかどうかです。本式に作るときにはこの辺りまで気になります。何かが起きた後ではまずいので。
>解決策があれば教えて頂きたく思いますので、よろしくお願いします。
対応として、
If Target.Address = "$G$7" And Target <> "" Then
↓
If Target.Address = "$G$7" And Target.text <> "" Then
ちゃんとプロパティを書くことです。
または、
If Target.Address = "$G$7" Then
If Target <> "" Then
と意味が異なることをAndで判定しないようにします。この場合はTargetにTextプロパティは必須ではありません。
さらに、作業グループを意識する場合は、
If ActiveSheet.Name = "Sheet1" Then
のような判定を追記します。
No.2
- 回答日時:
こんばんは!
前回回答した者です。
>2つのセルを一度にペーストしようとすると、(例えば、C11とC12をC13とC14にコピーペースト)
とありますが、各SheetのC11・C12セルをそのSheetのC13・C14セルにコピーする!というコトでしょうか?
一応そういうコトだとして・・・
前回の「連番」とは意味が違うと思いますので、別のマクロにしてみてはどうでしょうか?
前回はSheet「1」のChangeイベントですので、
Sheet「1」のG7セルデータ変更時にマクロが実行されるコードでした。
標準モジュールに↓のコードをコピー&ペースト → Excel画面に戻りマクロを手作業で実行してみてください
(Alt+F8キー → マクロ → マクロ実行です)
Sub セルコピー()
Dim k As Long
For k = 1 To Worksheets.Count
If IsNumeric(Worksheets(k).Name) Then
With Worksheets(k)
.Range("C11:C12").Copy .Range("C13")
End With
End If
Next k
End Sub
※ 今回もSheet名が数字のみのSheetで動作するようにしています。
※ 各SheetのC11・C12セルをそのSheetのC13・C14セルにコピー&ペーストしています。m(_ _)m
何度もお手を煩わせまして申し訳ありません。
なかなか一度で完璧に!とはいかないようですが、今のところ順調に動いております。
いろいろと奥が深いものですね・・・。
No.1
- 回答日時:
If Target.Address = "$G$7" And Target <> "" Then
これを見ても、1つのセルをターゲットにしています。
そのプログラムの前に
If Target.Rows.Count <> 1 Then
Exit Sub
End If
と入れてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, k As Long, cnt As Long, str As String, buf As String
If Target.Rows.Count <> 1 Then
Exit Sub
End If
If Target.Address = "$G$7" And Target <> "" Then
For i = 1 To Len(Target)
str = Mid(Target, i, 1)
If str Like "[0-9]" Then Exit For
buf = buf & str
Next i
cnt = Replace(Target, buf, "") + 1
Range("F32") = buf & Format(cnt, "0000")
For k = 3 To Worksheets.Count '★Sheet見出しの3番目のSheet~最終Sheetまで
If IsNumeric(Worksheets(k).Name) Then
cnt = cnt + 1
With Worksheets(k)
.Range("G7") = buf & Format(cnt, "0000")
cnt = cnt + 1
.Range("F32") = buf & Format(cnt, "0000")
End With
End If
Next k
End If
End Sub
こうですね。
少しずつどういった流れでプログラムが動いているのか見てみると良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/07/05 09:30
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 【エクセル】文中に別シートのセルの内容を自動入力したい 6 2022/11/17 11:30
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセルのdatedif関数を使って...
-
【画像あり】オートフィルター...
-
【マクロ】アクティブセルの時...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
ページが変なふうに切れる
-
【マクロ】実行時エラー '424':...
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報