VBAでセルの条件付き交互塗りを行う方法

Visual Basic

Excelで特定のパターンに従ってセルに色を塗る場合、VBAを使うと柔軟に処理できます。ここでは1列目と2列目を交互に、セルに⚪︎が出現したタイミングで塗り開始位置を切り替える方法を解説します。

基本方針

1列目から塗り始め、⚪︎が現れたら次の空セルから2列目を塗り始め、再び⚪︎が出たら1列目に戻る、というループを行います。

VBAではForループで各行を順に確認し、変数で現在どの列を塗るかを管理します。

サンプルコード

Sub AlternatingFill()
    Dim lastRow As Long
    Dim colFlag As Integer
    Dim i As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    colFlag = 1 ' 1列目から開始

    For i = 1 To lastRow
        If Cells(i, colFlag).Value = "⚪" Then
            ' 列を切り替える
            If colFlag = 1 Then
                colFlag = 2
            Else
                colFlag = 1
            End If
            ' 次の空セルから塗る処理
            Do While Cells(i, colFlag).Value <> ""
                i = i + 1
                If i > lastRow Then Exit Sub
            Loop
        End If
        ' 塗る処理(例: 赤)
        Cells(i, colFlag).Interior.Color = RGB(255, 0, 0)
    Next i
End Sub

解説

このコードではcolFlagで現在塗る列を管理し、⚪︎が出現するたびに1列目と2列目を切り替えます。空セルを見つけるまでループして、次の塗り開始位置を特定しています。

塗りたい色はRGB関数で自由に設定できますし、複数列や複雑なパターンにも応用可能です。

まとめ

VBAを使うことで、条件に応じた交互塗りが可能です。列切り替えや空セル判定を変数で管理することで、複雑なパターンも柔軟に処理できます。

コメント

タイトルとURLをコピーしました