Excelで1行おきに色を塗って縞模様にする方法!【VBA入門】

Excel

Excelで大きな表を作成した際に、1行おきに色を変え縞模様にすると見易さが大きく変わります。

昔からの定番として「条件付き書式」にで1行おきに背景色を設定するという方法がありますが、今回はこの作業をExcelマクロで自動化してしまおう!というお話です。

Sponsored Link

条件付き書式の考え方

条件付き書式を使用する方法では「奇数行か偶数行かを判定」して書式を設定します。具体的にどうやるかというと、次のような式を使います。

奇数行を指定する場合

=MOD(ROW(),2)=1

式の意味

MOD関数は「剰余(割り算をした時の余り)を求める」関数です。1つ目の引数を2つ目の引数で割った時の余りを返します。1つ目の引数に指定しているROW関数は行番号を返す関数ですので、ここでは「行番号を2で割った時の余りが1の時」というルールを指定していることになります。つまり「奇数行の時」というルールを表しています。

偶数行を指定する場合

=MOD(ROW(),2)=0

MOD関数の戻り値が0の時とすれば、「偶数行の時」というルールになります。

Sponsored Link

VBAで書いてみる

“1行おきに背景色を設定する”条件付書式を設定するマクロは次のように書きます。最初のWith句で数式を設定し、2つめのWith句で塗りつぶしの色を設定しています。

Sub PaintSkipRows()
    '行数指定の数式を定数定義
    Const C_RULE As String = "=MOD(ROW(),2) = 1"

    With Selection.FormatConditions
        '選択範囲の条件付書式を削除
        .Delete
        '数式設定
        .Add Type:=xlExpression, Formula1:=C_RULE
    End With
    '条件付書式の1つめに追加
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    '塗りつぶし設定
    With Selection.FormatConditions(1).Interior
        .PatternThemeColor = xlThemeColorAccent6
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.8
        .PatternTintAndShade = 0.8
    End With
    '条件を満たす場合は停止のチェックは無効
    Selection.FormatConditions(1).StopIfTrue = False
End Sub

Sponsored Link

マクロの使い方と実行結果

あらかじめ「1行おきに背景色を設定したい範囲を選択し」上記のマクロを実行すると、次のようになります。

今回はこの辺で。

にほんブログ村 IT技術ブログへ
にほんブログ村

コメント

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