空白のセルに色をぬる
InteriorオブジェクトのColorIndexプロパティ
空欄のセルに色
仕事の予定表や予約表などを使うときに、予定の入って無いセルを目立たせたいという場合があります。
確かに、空白が赤く塗ってあればかなり目立ちます。
(サンプルファイルは、こちらから 2010マクロ講座31回サンプルデータ)
背景色を設定するInteriorオブジェクトのColorIndex
背景色を設定するには、InteriorオブジェクトのColorIndexプロパティにつけたい色の値を設定します。
シートのA1セルに赤い色を設定したいときは、コードを

Sub iro() Worksheets("Sheet1").Range("A1").Interior.ColorIndex = 3 End Subのように記述すれば、A1セルの背景色を赤くすることができます。 A1などの特定のセルではなく、選択セルの背景を赤くしたいという場合は、Selectionを使って下さい。
Selection.Interior.ColorIndex = 3

セル範囲の空白のセルだけ背景色に色をつける
セル範囲のセルの一つ一つに対して、空白ならば色をつけるという場合には、
For Each~Nextステートメントを使って指定した範囲のセル全てに同じ処理(もしも空白ならば、背景色は○)を行います。


「もしも~なら」の判断に使うのは、「If~Thenステートメント」です。
「If~Thenステートメント」を使うと、 論理式(条件式)を使って条件が成立した時の処理を実行することができます。


サンプルでは、予約表の空欄の背景色を黄色に設定します。


コードは以下のようになります。

Sub 空欄セルに色を付ける() Dim 空欄 As Range For Each 空欄 In Range("C4:F14") If 空欄.Value = "" Then 空欄.Interior.ColorIndex = 36 End If Next End Subコードを実行すると、空欄が黄色に塗られます。

事前に選択したセルをSelectionで指定
セル範囲をSelectionで指定する方法は、直接アドレスで範囲を指定するよりも、汎用的で楽な方法です。
Sub 空欄セルに色を付ける2() Dim 空欄 As Range For Each bs In Selection If 空欄.Value = "" Then 空欄.Interior.ColorIndex = 18 End If Next End Sub
ActiveCell.CurrentRegionを使う
ActiveCell.CurrentRegionを使うと、表内の1つのセルだけの選択ですみます。
Sub 空欄セルに色を付ける3() Dim 空欄 As Range, tr As Range Set tr = ActiveCell.CurrentRegion.Offset(1, 2) For Each 空欄 In tr.Resize(tr.Rows.Count - 1, 4) If 空欄.Value = "" Then 空欄.Interior.ColorIndex = 18 End If Next End Sub
上記のコードにおいて、ActiveCellのかわりに、Range("A3")など直接指定してもいいです。
Sub 空欄セルに色を付ける4() Dim 空欄 As Range, tr As Range Set tr = Range("A3").CurrentRegion.Offset(1, 2) For Each 空欄 In tr.Resize(tr.Rows.Count - 1, 4) If 空欄.Value = "" Then 空欄.Interior.ColorIndex = 18 End If Next End Sub