- Excel VBAでセルの文字色や背景色を設定する方法
- Excel VBAでセルの文字色や背景色を取得する方法
- Excel VBAでセルの色をクリアする方法
今回は上記のテーマで解説をしていきます。
セルの色はRGB関数やColorIndexプロパティを使用して設定することができます。
Cells(1, 1).Font.Color = RGB(255, 0, 0)
Cells(1, 1).Font.ColorIndex = 3
Cells(1, 1).Interior.Color = RGB(255, 0, 0)
Cells(1, 1).Interior.ColorIndex = 3
設定の仕方や色の取得の仕方について細かく網羅的に解説をしていくので、是非参考にして頂ければと思います。
[Excel VBA]セルの色を設定する方法:文字色と背景色の設定
まず最初にセルの色を設定する方法について見ていきますが、下記の観点で紹介をしていきます。
- 色を設定する基本コード
- セルの範囲の色を設定する
- 指定したシートのセルの色を設定する
それぞれ見ていきましょう。
RGB関数とColorindexプロパティを使用した基本コード
まずは色を設定する基本コードを見ていきましょう。RGB関数とColorIndexプロパティを使用したもの、それぞれ紹介していきます。
RGB関数での設定
RGB関数を使用する場合は下記のように設定を行っていきます。
Cells(1, 1).Font.Color = RGB(255, 0, 0) ‘A1セルの文字色を設定
Cells(1, 1).Interior.Color = RGB(255, 0, 0) ‘A1セルの背景色を設定
「.Font.Color」で文字色を、「.Interior.Color」でセルを塗りつぶしすることができます。
下記のようにRangeプロパティを使用しても同様に設定することが可能です。
Range(“A1”).Font.Color = RGB(255, 0, 0) ‘A1セルの文字色を設定
Range(“A1”).Interior.Color = RGB(255, 0, 0) ‘A1セルの背景色を設定
ColorIndexプロパティでの設定
ColorIndexプロパティを使用して設定する場合は下記のように行います。
Cells(1, 1).Font.ColorIndex = 3 ‘A1セルの文字色を設定
Cells(1, 1).Interior.ColorIndex = 3 ‘A1セルの背景色を設定
RGB同様にColorIndexプロパティに関してもRangeプロパティを使用して設定することができます。
Range(“A1”).Font.ColorIndex = 3 ‘A1セルの文字色を設定
Range(“A1”).Interior.ColorIndex = 3 ‘A1セルの背景色を設定
セルの範囲の色を設定する方法
上記は一つのセルの色を設定する方法について見てきましたが、中には特定の範囲に同じ色を付けたいという場合もあるかと思います。その場合は下記のようにRangeプロパティを使用して設定することができます。
Range(“A1:C4”).Font.ColorIndex = 3 ‘A1~C4セルの文字色を設定
Range(“A1:C4”).Font.Color = RGB(255, 0, 0) ‘A1~C4セルの文字色を設定
Range(“A1:C4”).Interior.ColorIndex = 3 ‘A1~C4セルの背景色を設定
Range(“A1:C4”).Interior.Color = RGB(255, 0, 0) ‘A1~C4セルの背景色を設定
指定したシートのセルの色を設定する方法
現在のアクティブシートではなく別のシートのセルの色を設定する、明示的にシートを指定してセルの色を設定する場合はWorksheetsプロパティを使用します。
Worksheets(“Sheet1”).Cells(1, 1).Font.Color = RGB(255, 0, 0) ‘Sheet1のA1セルの文字色を設定
Worksheets(1).Cells(1, 1).Font.Color = RGB(255, 0, 0) ‘Sheet1のA1セルの文字色を設定
上記のようにワークシート名で指定してもシートのインデックスで指定しても同じ処理となります。
[Excel VBA]セルの色を取得する方法:文字色と背景色の取得
続いてセルの色を取得する方法についても見ていきましょう。
セルの色を取得する基本コード
セルの色を取得する場合の基本コードは下記のようになっています。
格納する変数 = Cells(1, 1).Font.Color ‘A1セルの文字色を取得
格納する変数 = Cells(1, 1).Interior.Color ‘A1セルの背景色を取得
格納する変数は「Long型」で変数定義をした上で使用しましょう。ColorIndexプロパティを使用して下記のように取得することも可能です。
格納する変数 = Cells(1, 1).Font.ColorIndex ‘A1セルの文字色を取得
格納する変数 = Cells(1, 1).Interior.ColorIndex ‘A1セルの背景色を取得
指定したシートのセルの色を取得する方法
指定したシートのセルの色を設定する時と同様にセルの色を取得するにはシートを指定した上で取得することができます。
格納する変数 = Worksheets(“Sheet1”).Cells(1, 1).Font.Color ‘Sheet1のA1セルの文字色を設定
格納する変数 = Worksheets(1).Cells(1, 1).Font.Color ‘Sheet1のA1セルの文字色を設定
格納する変数 = Worksheets(“Sheet1”).Cells(1, 1).Interior.Color ‘Sheet1のA1セルの背景色を設定
格納する変数 = Worksheets(1).Cells(1, 1).Interior.Color ‘Sheet1のA1セルの背景色を設定
Long型の変数を用意することで上記のようにセルの色を取得することが可能です。
[Excel VBA]セルの色をクリアする方法
最後にセルの色をクリアする方法についても見ていきます。セルの色をクリアするのは下記いずれかの方法で用途に応じて使用しましょう。
- ClearFormatsで書式を一度にクリアする
- 文字色をクリアする
- 背景色をクリアする
それぞれどういう使い方をするかというと下記のようになります。
Cells(1, 1).ClearFormats
Range(”A1:C4″).ClearFormats
Cells(1, 1).Font.Color = RGB(0, 0, 0)
Cells(1, 1).Font.ColorIndex = 0
Cells(1, 1).Interior.Color = RGB(255, 255, 255)
Cells(1, 1).Interior.ColorIndex = 0
上記の通り、文字色と背景色をクリアする場合、文字色であれば黒色、背景色であれば白色を設定することによって色をクリアします。
[Excel VBA]色の見本一覧
ここまで色の設定方法、取得方法、クリアする方法を見てきましたが、色を設定したり取得する時に色のコードがわからないと困ると思うので、ColorIndexの一覧を紹介しておきます。
色 | ColorIndex | RGB |
塗りつぶしなし | 0 | – |
1 | RGB(0,0,0) | |
2 | RGB(255,255,255) | |
3 | RGB(255,0,0) | |
4 | RGB(0,255,0) | |
5 | RGB(0,0,255) | |
6 | RGB(255,255,0) | |
7 | RGB(255,0,255) | |
8 | RGB(0,255,255) | |
9 | RGB(128,0,0) | |
10 | RGB(0,128,0) | |
11 | RGB(0,0,128) | |
12 | RGB(128,128,0) | |
13 | RGB(128,0,128) | |
14 | RGB(0,128,128) | |
15 | RGB(192,192,192) | |
16 | RGB(128,128,128) | |
17 | RGB(153,153,255) | |
18 | RGB(153,51,102) | |
19 | RGB(255,255,204) | |
20 | RGB(204,255,255) | |
21 | RGB(102,0,102) | |
22 | RGB(255,128,128) | |
23 | RGB(0,102,204) | |
24 | RGB(204,204,255) | |
25 | RGB(0,0,128) | |
26 | RGB(255,0,255) | |
27 | RGB(255,255,0) | |
28 | RGB(0,255,255) | |
29 | RGB(128,0,128) | |
30 | RGB(128,0,0) | |
31 | RGB(0,128,128) | |
32 | RGB(0,0,255) | |
33 | RGB(0,204,255) | |
34 | RGB(204,255,255) | |
35 | RGB(204,255,204) | |
36 | RGB(255,255,153) | |
37 | RGB(153,204,255) | |
38 | RGB(255,153,204) | |
39 | RGB(204,153,255) | |
40 | RGB(255,204,153) | |
41 | RGB(51,102,255) | |
42 | RGB(51,204,204) | |
43 | RGB(153,204,0) | |
44 | RGB(255,204,0) | |
45 | RGB(255,153,0) | |
46 | RGB(255,102,0) | |
47 | RGB(102,102,153) | |
48 | RGB(150,150,150) | |
49 | RGB(0,51,102) | |
50 | RGB(51,153,102) | |
51 | RGB(0,51,0) | |
52 | RGB(51,51,0) | |
53 | RGB(153,51,0) | |
54 | RGB(153,51,102) | |
55 | RGB(51,51,153) | |
56 | RGB(51,51,51) |
[Excel VBA]条件に合うセルの色を変えるサンプルコード
ここまで基本系については紹介してきたので、最後に実際に使用する場面を想定したサンプルコードを紹介します。
上記画面のように5以上の数字の時に背景色を黄色、文字色を赤色にする場合は下記のようなコードとなります。
Sub Cell()
Dim x As Integer
x = 2
Do While Cells(x, 1) <> ""
If Cells(x, 1) >= 5 Then
Cells(x, 1).Font.Color = RGB(255, 0, 0)
Cells(x, 1).Interior.Color = RGB(255, 255, 0)
End If
x = x + 1
Loop
End Sub
今回は以上となります。