1行おきに表の色を消す: Excel2010 マクロ

For Each ~ Nextで繰り返し Excel2010 マクロ講座 25回

色の付いている表を1行おきに色を消す

この方法だと、とても簡単に1行おきに表の色を変えることができます。
同じ表とは思えないほど、見栄えがよくなりますよ。さらに今回は管理人お気に入りのコードも紹介しましょう。 それは、CurrentRegionプロパティで現在の範囲を選択させて、勝手にシマシマにするというコード。
1行おきに表の色を消すマクロ1

(サンプルファイルは、こちらから 2010マクロ講座25回サンプルデータ

表を1行おきに色をつける要はメインの色

いくら1行おきにセルの背景色の色を変えたいとはいえ、クールに見えるかどうかの要はメインの色です。 しかし、メインの色を変更するのでは、ColorIndexから色を探したり、コードを書き換えたりといちいち面倒くさいのも事実。 だったら、メインの色は、先にセルに適用してしまい、後から1行おきに色を白くすれば簡単です。
サンプルの例では、元の表は、すでにセルに色をつけてあります。これを1行おきに変更したければ、以下のコードを実行するだけ。 つかうコードは、マクロ講座 22回で使ったコードを
Interior.ColorIndex = 0にしただけのもの。
Sub セルの1行おきに色を消す()
  Dim 表 As Range
  For Each 表 In Selection 
    If 表.Row Mod 2 = 0 Then
      表.Interior.ColorIndex = 0
    End If
  Next
End Sub
    
コードを実行すると、For Each ~ Nextステートメントで範囲のセルに対して処理を繰り返します。
If~Then~End If ステートメントで行番号が偶数ならば、選択範囲の偶数の行が白に変わります。
1行おきに表の色を消すマクロ3
その処理を繰り返し終了、結果としてシマシマになるわけです。誰でも思いつきそうでいて、思いつかないかもしれない裏技。 奇数行の色を白にしたい場合は、Mod 2 = 1 にして使ってください。

大きな表を選択するショートカットキーを使う

ただし、このコードを使うには、事前に範囲を選択しておく必要があります。もし大きな表を選択するのが大変な時は、ショートカットキーを使ってください。
このショートカットをテンキーの[*]キーを使って操作する場合には[Shift]キーは不要です。
1行おきに表の色を消すマクロ2

CurrentRegionプロパティで現在の範囲を選択

ここからが、管理人のお気に入りコードです。 (管理人のように)ショートカットキーも使いたくない(めんどうななことはしたくない)場合は、元のコードに1行追加します。
Range("A2").CurrentRegion.Select
Range("A2")は、Range("B2")とか、("C3")とか、表の範囲内にありそうなセルならどこでもいいですよ。
Sub セルの1行おきに色を消す2()
  Dim 表 As Range
  Range("A2").CurrentRegion.Select
  For Each 表 In Selection
    If 表.Row Mod 2 = 0 Then
      表.Interior.ColorIndex = 0
    End If
  Next
End Sub    
    
すると、あっという間に1行おきのシマシマデザインに変身します。
1行おきに表の色を消すマクロ3

ActiveCellを使ってさらにカンタンに

こんどは、Range("A2")などと決めてコードを書かずに、事前に表のセルを一つ選択しておく方法です。
ActiveCell.CurrentRegion.Rows.Count
で表の行数を取得できますか。
その行数を利用して、Offsetプロパティで表を1行下にずらします。さらにResizeプロパティで表の行数を1行小さくします。 すると見出し行を除いた表の範囲が取得できます。そこで、1行ごとに色を消していきます。
      Sub 表の1行毎に色消し()
      Dim rc As Long, gyou As Range, rng As Range
      rc = ActiveCell.CurrentRegion.Rows.Count
      Set rng = ActiveCell.CurrentRegion.Offset(1, 0).Resize(rc - 1)
      For Each gyou In rng
          If gyou.Row Mod 2 = 0 Then
              gyou.Interior.ColorIndex = xlNone
          End If
      Next
  End Sub  
コードは、個人用マクロブックに保存して、いつでも使えるようにすると良いでしょう。