VBAで1行おきに色を塗る方法|Step 2でストライプ状の表を自動作成

VBAで1行おきに色を塗るには、For ループに Step 2 を組み合わせて、偶数行(または奇数行)だけに Interior.Color で色を設定します。データ量が変わっても最終行を自動で取得するので、毎回コードを変える必要がありません。

この記事では、次の内容を順番に解説します。

  • 1行おきに色を塗る基本のコード
  • 特定の列範囲だけに色をつける方法
  • 色をリセットしてから塗り直す方法

1行おきに色を塗るコードは?

Sub ColorAlternateRows()

    Dim i As Long
    Dim lastRow As Long

    ' A列の最終行を取得する
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2行目から最終行まで、2行ずつ飛ばしながら色を塗る
    For i = 2 To lastRow Step 2
        Rows(i).Interior.Color = RGB(230, 240, 255)
    Next i

End Sub

コードのポイント

  • Step 2:ループが2行ずつ進みます。2行目→4行目→6行目…と偶数行だけを処理します。
  • Rows(i).Interior.Color:その行全体の背景色を設定します。
  • RGB(230, 240, 255):薄い青系の色です。数値を変えると好きな色に変えられます。

特定の列範囲だけに色をつけるには?

行全体ではなく、A〜D列だけに色をつけたい場合は Rows(i) の代わりに Range(Cells(i,1), Cells(i,4)) を使います。

Sub ColorAlternateRange()

    Dim i As Long
    Dim lastRow As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastRow Step 2
        Range(Cells(i, 1), Cells(i, 4)).Interior.Color = RGB(255, 255, 200)
    Next i

End Sub

Cells(i, 1) がA列、Cells(i, 4) がD列です。列番号を変えると対象範囲を変えられます。

色をリセットしてから塗り直すには?

何度もマクロを実行すると色が重複することがあります。先に色を全部クリアしてから塗り直すと、何度実行しても同じ結果になります。

Sub ResetAndColor()

    Dim i As Long
    Dim lastRow As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    ' まず色をすべてクリアする
    Range(Cells(2, 1), Cells(lastRow, 4)).Interior.ColorIndex = xlNone

    ' 偶数行だけに色を塗る
    For i = 2 To lastRow Step 2
        Range(Cells(i, 1), Cells(i, 4)).Interior.Color = RGB(220, 255, 220)
    Next i

End Sub

Interior.ColorIndex = xlNone で背景色を「なし」に戻します。

まとめ

  • 基本の書き方For i = 2 To lastRow Step 2 で偶数行だけをループする。
  • 行全体に色をつけるRows(i).Interior.Color = RGB(...)
  • 列範囲を限定するRange(Cells(i,1), Cells(i,4)).Interior.Color = RGB(...)
  • 色をリセットするInterior.ColorIndex = xlNone で背景色を消す。

よくある質問

奇数行に色をつけたい場合は?

For i = 3 To lastRow Step 2 のように開始を3にするだけで、3行目→5行目→7行目と奇数行だけを処理できます。

色の値はどこで確認できる?

Excelの「セルの書式設定」→「塗りつぶし」→「その他の色」→「ユーザー設定」タブでRGB値が確認できます。この値をそのまま RGB(赤, 緑, 青) に使えます。

条件付き書式と組み合わせることはできる?

VBAで色をつける方法と条件付き書式は競合することがあります。条件付き書式が設定されている場合、VBAで塗った色が上書きされることがあります。どちらかに統一して使うのがおすすめです。

印刷したときに色が薄くて見えない場合は?

RGBの値を少し濃い色に変えてみてください。印刷では画面より色が薄く出ることがあります。たとえば RGB(180, 210, 255) のように、数値を少し下げると濃い色になります。

ヘッダー行(1行目)には色をつけたくない場合は?

ループの開始を i = 2 にすることで1行目はスキップされます。ヘッダーに別の色をつけたい場合は、ループの前に Rows(1).Interior.Color = RGB(70, 130, 180) のように別途設定します。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール