![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
解決したと思い締め切らせていただいたのですが、
再度問題が出てきたので質問させてください。
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ランキング
-
エクセルのツールバーから数値...
-
祝日と土曜、日曜の合計をカウ...
-
【マクロ】2回実行したら、エ...
-
特定の文字列を含む、住所を抽...
-
EXCELの散布図で日付が1900年に...
-
マイクロソフトのPADを使ってい...
-
Excel分数の表示について
-
Excelで表を作ったところに文字...
-
マクロエクセルのブロック解除
-
文字2桁、3桁交じりの文字列...
-
絶対参照
-
Excelについての質問です。 B2...
-
在庫管理表に使うエクセルの関...
-
【マクロ】VLOOKUPにて参照元に...
-
【EXCEL】画像の黄色部分の抽出...
-
DATE関数で現在の年齢を出した...
-
ユーザー定義関数をアドイン登...
-
エクセルでの作業計算方法について
-
行数が不規則な一週間ごとの合...
-
Excelピボットテーブルの1行目
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報