1行おきに表の色を消す: Excel2010 マクロ
For Each ~ Nextで繰り返し Excel2010 マクロ講座 25回
色の付いている表を1行おきに色を消す
この方法だと、とても簡単に1行おきに表の色を変えることができます。
同じ表とは思えないほど、見栄えがよくなりますよ。さらに今回は管理人お気に入りのコードも紹介しましょう。
それは、CurrentRegionプロパティで現在の範囲を選択させて、勝手にシマシマにするというコード。
(サンプルファイルは、こちらから 2010マクロ講座25回サンプルデータ)
表を1行おきに色をつける要はメインの色
いくら1行おきにセルの背景色の色を変えたいとはいえ、クールに見えるかどうかの要はメインの色です。
しかし、メインの色を変更するのでは、ColorIndexから色を探したり、コードを書き換えたりといちいち面倒くさいのも事実。
だったら、メインの色は、先にセルに適用してしまい、後から1行おきに色を白くすれば簡単です。
サンプルの例では、元の表は、すでにセルに色をつけてあります。これを1行おきに変更したければ、以下のコードを実行するだけ。 つかうコードは、マクロ講座 22回で使ったコードを
Interior.ColorIndex = 0にしただけのもの。
サンプルの例では、元の表は、すでにセルに色をつけてあります。これを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 ステートメントで行番号が偶数ならば、選択範囲の偶数の行が白に変わります。
その処理を繰り返し終了、結果としてシマシマになるわけです。誰でも思いつきそうでいて、思いつかないかもしれない裏技。 奇数行の色を白にしたい場合は、Mod 2 = 1 にして使ってください。
その処理を繰り返し終了、結果としてシマシマになるわけです。誰でも思いつきそうでいて、思いつかないかもしれない裏技。 奇数行の色を白にしたい場合は、Mod 2 = 1 にして使ってください。
大きな表を選択するショートカットキーを使う
ただし、このコードを使うには、事前に範囲を選択しておく必要があります。もし大きな表を選択するのが大変な時は、ショートカットキーを使ってください。
このショートカットをテンキーの[*]キーを使って操作する場合には[Shift]キーは不要です。
このショートカットをテンキーの[*]キーを使って操作する場合には[Shift]キーは不要です。
CurrentRegionプロパティで現在の範囲を選択
ここからが、管理人のお気に入りコードです。
(管理人のように)ショートカットキーも使いたくない(めんどうななことはしたくない)場合は、元のコードに1行追加します。
Range("A2").CurrentRegion.Select
Range("A2")は、Range("B2")とか、("C3")とか、表の範囲内にありそうなセルならどこでもいいですよ。
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行おきのシマシマデザインに変身します。
ActiveCellを使ってさらにカンタンに
こんどは、Range("A2")などと決めてコードを書かずに、事前に表のセルを一つ選択しておく方法です。
ActiveCell.CurrentRegion.Rows.Count
で表の行数を取得できますか。
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
コードは、個人用マクロブックに保存して、いつでも使えるようにすると良いでしょう。