はい。今日はセルを好きな色で塗ってみましょう。
塗り絵みたいで面白いですよ。
むらがないように綺麗に塗りましょう。
Excel だから、むらなんてできるわけないけどね。
余計なおしゃべりはこのぐらいにして本題に入ります。
【VBA】セルに背景色を指定します
VBA でワークシートのセルに色を塗りたいときは、Interiorオブジェクト の Colorプロパティまたは ColorIndexプロパティの値を変えます。
【VBA】Colorプロパティ
Color プロパティを使う場合は RGB で指定します。RGB とは Red, Green, Blue の頭文字。つまり赤、緑、青をどれぐらいの配分で混ぜるかを指定するのです。この方法は、大体どんな色になるのか予測しやすいのが利点ですね。たとえばセルA1 を青く塗るならこんな感じ。
'[VBA] セルA1の背景色を青色にします
Sub Interior_Blue()
Range("A1").Interior.Color = RGB(0, 0, 255)
End Sub
Red も Green も 0 にして、Blue に最大値 255 を指定しているのです。だからセルが真青になるのです。
【VBA】ColorIndexプロパティ
ColorIndex プロパティを使う場合は、あらかじめ色に割り当てられている番号を指定します。たとえばセルA1 の背景色を 10 番に指定してみます。
'[VBA] セルA1の背景色に10番を指定します
Sub Interior_10()
Range("A1").Interior.ColorIndex = 10
End Sub
とりあえず適当に色を指定しているだけなので、こばとも 10 番がどんな色なのかさっぱりわかりません。Interior_10() を実行してみましょう。
緑色でしたね。でも、どの色にどんな番号が割り振られているかなんて、よっぽどの Excel オタクでもないかぎり覚えていられません。そんなわけで一覧表を表示してみましょう。
'[VBA] ColorIndexのリスト
Sub ColorIndex_List()
Dim i As Integer
For i = 1 To 50
Cells(i, 1).Interior.ColorIndex = i
Next i
End Sub
ColorIndex_List() を実行すると …
こんなふうにずらずらと色が並びます。
行番号がそれぞれの色に対応する番号になっていますよ。
これを参照しながら好きな色で塗ってくださいな。
そうは言っても、毎回番号を確認しながら色を指定するのはやっぱり面倒ですね。そんなときは、ユーザー定義定数を設定しておくと便利ですよ。たとえば宣言セクションで
Const myRed As Integer = 3
と書いておいて、
'[VBA] セルA1 の背景色を赤にします
Sub Interior_Red()
Range("A1").Interior.ColorIndex = myRed
End Sub
を実行するとセルA1 が赤く塗り潰されます。
実用面ではある条件をみたすセルにだけ色を塗りたいなというケースが多いですよね。そこで、まず次のようなシートを用意してくださいな。
セルB2 から D4 の範囲で「赤」という文字が入力されているセルは赤色、「青」という文字が入力されているセルは青色、何も入力されていないセルは黄色で塗ることにします。こういう場合は For…Each…Nextステートメントを使うと便利です。
Const myRed As Integer = 3
Const myBlue As Integer = 5
Const myYellow As Integer = 6
'[VBA] 条件をみたすセルを色で塗り分けるマクロ
Sub Red_Blue_Yellow()
Dim myrange As Range
For Each myrange In ActiveSheet.Range("B2:D4")
If myrange.Value = "赤" Then
myrange.Interior.ColorIndex = myRed
ElseIf myrange.Value = "青" Then
myrange.Interior.ColorIndex = myBlue
Else
myrange.Interior.ColorIndex = myYellow
End If
Next
End Sub
Red_Blue_Yellow() を実行してみると …
ちゃんと塗り分けられましたね。
コメント