Excelで大きな表を作成した際に、1行おきに色を変え縞模様にすると見易さが大きく変わります。
昔からの定番として「条件付き書式」にで1行おきに背景色を設定するという方法がありますが、今回はこの作業をExcelマクロで自動化してしまおう!というお話です。
条件付き書式の考え方
条件付き書式を使用する方法では「奇数行か偶数行かを判定」して書式を設定します。具体的にどうやるかというと、次のような式を使います。
奇数行を指定する場合
=MOD(ROW(),2)=1
式の意味
MOD関数は「剰余(割り算をした時の余り)を求める」関数です。1つ目の引数を2つ目の引数で割った時の余りを返します。1つ目の引数に指定しているROW関数は行番号を返す関数ですので、ここでは「行番号を2で割った時の余りが1の時」というルールを指定していることになります。つまり「奇数行の時」というルールを表しています。
偶数行を指定する場合
=MOD(ROW(),2)=0
MOD関数の戻り値が0の時とすれば、「偶数行の時」というルールになります。
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
マクロの使い方と実行結果
あらかじめ「1行おきに背景色を設定したい範囲を選択し」上記のマクロを実行すると、次のようになります。
今回はこの辺で。
コメント