For Each … Nextで条件分岐してセルの塗りつぶしをする

Excel VBA For Each…Next

For Each…Nextでセルの表示形式を調べて分岐処理を行い、セルの塗りつぶしをするVBAのコードを紹介します。

VBEを起動して「挿入」→「標準モジュール」を選択して標準モジュールを作成します、作成した標準モジュールのModule1に下のコードをコピーして貼り付けます。

Sub 表示形式が標準のセルを水色で塗りつぶす()

Dim search_Cell As Range
Dim Flag As Boolean

For Each search_Cell In Range("A1:G21")

If search_Cell.NumberFormatLocal = "G/標準" Then '表示形式が標準の場合は。

search_Cell.Interior.ColorIndex = 8 'セルを水色で塗りつぶします。
Flag = True

End If

Next search_Cell

If Flag = True Then 'ループ終了後にメッセージを表示します。

MsgBox "セルの書式設定の表示形式が「標準」のセルを水色で塗りつぶしました。"

Else

MsgBox "セルの書式設定の表示形式が「標準」のセルはありません。"

End If

End Sub

エクセルのSheet1を表示して「開発タブ」 →「マクロの表示」ボタン → マクロ名「表示形式が標準のセルを水色で塗りつぶす」を選択 → [実行] ボタンを押すとプログラムが実行できます。

エクセルシートの指定した範囲「A1:G21」のセルの表示形式を左から右に調べていき、右端に達すると次の行の左端に移動をして、最終的にセルG21まで調べて終了します。

セルA1からセルG1までを水色に塗ります。

次の行の左端に移動します。

同じ動きを繰り返して、セル G21 まで塗って終了します。

セルの書式設定が初期設定の「G/標準」なので、すべてのセルが水色で塗られてプログラムが終了しました。

今回のプログラムは条件によってセルの塗りつぶしを行うプログラムですが、条件式を変更すればいろいろなセル操作をすることができます。(^o^)