• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA シートセレクト方法)

VBAシートセレクト方法

このQ&Aのポイント
  • VBAを使用してエクセルの請求書確認シートと請求書入力シートの数字を比較し、一致するセルを青色で塗りつぶしたい場合の方法について教えてください。
  • 現在のコードでは実行時エラーが発生してしまい、セルの選択や塗りつぶし処理ができません。修正方法を教えてください。
  • 同じシート内の特定のセルを選択して塗りつぶすことはできていますが、異なるシートのセルを選択するとエラーが発生します。どのように修正すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

「請求入力」シートがアクティブになってないのにSelectしようとしているからではないでしょうか。 対策としては、セルの背景色を設定するのにSelectする必要はないので、 Sheets("請求入力").Cells(N, 5).Select ' Range("A16").Select With Selection.Interior .ColorIndex = 8 .Pattern = xlSolid End With の部分を With Sheets("請求入力").Cells(N, 5).Interior .ColorIndex = 8 .Pattern = xlSolid End With とすればいいと思います。 マクロ実行後にどのセルの色が変わったか確かめるために、自動的に「請求入力」シートをアクティブにしたいのでれば、一番最後に、 Sheets("請求入力").Activate と入れておけばよいでしょう。 ところでちょっと気になったのですが、 If Sheets("請求入力").Cells(N, 1) = Cells(i, 6) Then の Cells(i, 6) という記述は、どのシートのセルかが明記されておらず、ActiveSheetのセルと認識されます。 このマクロが「請求書確認」シートに配置したボタンから実行されるなど、必ず「請求書確認」シートがアクティブな状態で実行されるのであれば問題はないのですが、どのシートが表示されているか不定な状態で実行される可能性があるのであれば、 With Sheets("請求書確認")  If Sheets("請求入力").Cells(N, 1) = .Cells(i, 6) Then のように、明示的にシートの指定をした方がよいかと思います。 必ずこのマクロが請求書確認シートから実行されるのであれば、この回答の後半部分は無視してください。

77TAKETAKA
質問者

お礼

ham_kamo様 すみません、前回もお世話になりましたが 今回もわかりにくい文面のところ適切な回答有難うございます。 思いどうり動きました。 後半部分の説明ですが今回は請求書確認がアクティブな状態から 必ず実行されます。 色々、気を使っていただき有難うございます。 調子に乗ってすみませんが又お願いいたします。

その他の回答 (1)

noname#31387
noname#31387
回答No.1

Selectしなくても出来ると思います。 ループも一回で良いのでは? シートの関係が違っていたら変更して下さい。 勘違いなら御免なさい。 Sub Test() Dim i As Long Dim myShi1 As Worksheet Dim myShi2 As Worksheet Set myShi1 = Worksheets("請求入力") Set myShi2 = Worksheets("請求書確認") For i = 4 To 2000   If myShi1.Cells(i, 1).Value = myShi2.Cells(i, 6).Value Then     myShi1.Cells(i, 5).Interior.ColorIndex = 8   End If Next Set myShi1 = Nothing Set myShi2 = Nothing End Sub

77TAKETAKA
質問者

お礼

すみません。少し違うやり方ですが こんな考え方もあるのだなーと思い勉強になりました。 有難うございます。

関連するQ&A