

エクセルである条件でセルの色を変えたいのですがうまくいきません。
一つのセルを選択した場合にはうまくいくのですが、複数セルを選択するとエラー(1004)になります。
分かりずらい質問で申し訳ありませんが、アドバイスいただけるとありがたいです。
下記の構文の時はエラーにならないです。
Worksheets(KK).Cells(m, t).Interior.Color = RGB(255, 255, 255)
Worksheets(KK).Cells(m, t).Interior.Color = RGB(191, 191, 191)
複数セルを選択するとエラーになります。
下記のプログラムがエラーになるときです。
For i = 1 To 31
If InStr(Worksheets(KK).Cells(4, t).Value, Worksheets("設定").Cells(s, "G").Value) > 0 Then
Worksheets(KK).Range(Cells(m, t), Cells(m, k)).Interior.Color = RGB(255, 255, 255)
Else
Worksheets(KK).Range(Cells(m, t), Cells(m, k)).Interior.Color = RGB(191, 191, 191)
End If
s=s+1
m = m + 1
Next i
No.1ベストアンサー
- 回答日時:
>Worksheets(KK).Range(Cells(m, t), Cells(m, k)).Interior.Color
この時のRangeとCellsで示すセルを持つシートが違う場合に起きますね。
具体的にはWorksheets(KK)がループ作業を行っている際にアクティブな状態にあるかどうかです。
アクティブでなければCellsで示すセルはアクティブシートのセルを示しますから『どっちのシートの事?』とExcelはエラーになるのです。
なので纏めるならWith~End Withで
With Worksheets(KK)
For i = 1 To 31
If InStr(.Cells(4, t).Value, Worksheets("設定").Cells(s, "G").Value) > 0 Then
.Range(.Cells(m, t), .Cells(m, k)).Interior.Color = RGB(255, 255, 255)
Else
.Range(.Cells(m, t), .Cells(m, k)).Interior.Color = RGB(191, 191, 191)
End If
s=s+1
m = m + 1
Next i
End With
とピリオドを頭に付けるとWithで示す物に繋がる事となり纏めやすくなり、且つ指定が明確になります。
返答ありがとうございます。
なるほど・・・
最初に作業するシートを明確に指定してループを行えばいいんですね。
自分で書いた内容でうまくいったときがあったのですが、たまたまそのシートが選択されていただけだったのですね。
構文の先頭にシートを書いたので、それでいいと思っていました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 送付元、送付先が同じ大きさの複合セルのコピーがVBAで、できません。 1 2023/06/01 20:51
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) ※初心者です マクロVBAについて 3 2022/11/05 12:53
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのマクロで複数のセルに色付する方法
Excel(エクセル)
-
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
-
4
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
5
エクセルVBA:リストに登録した単語と一致する文字色のみを、変更する方法
Excel(エクセル)
-
6
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
7
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
8
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
9
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
10
Excel VBA 標準モジュール内でイベント
その他(Microsoft Office)
-
11
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
12
【VBA】クリックする毎にセル色が変わる
Excel(エクセル)
-
13
マクロでセルの右から2番目の文字を取得する方法を教えてください
Excel(エクセル)
-
14
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
15
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
16
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
17
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
ハイパーリンクの参照セルのズ...
-
プリズンブレイクで有名なウェ...
-
エクセルの一つのセルに複数の...
-
VBAでセルを指定した画像のコピ...
-
公共建築工事 共通仮設費率 エ...
-
Excelについての質問です 並べ...
-
エクセルのセルの枠を超えて文...
-
【マクロ】アクティブセルの2...
-
vba テキストボックスとリフト...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
libreoffice calcで行を挿入し...
-
Excelで住所を2つ(町名迄と番...
-
Excelで数式内の文字色を一部だ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報