こんにちは、タクローです。
Excel VBAを使っていれば、セルの背景色や文字色を変更したりする処理をコーディングすることは頻繁にあるでしょう。
今回はセルの「背景色」と「文字色」に焦点を当ててみたいと思います。
セルの背景色を指定する場合はInteriorオブジェクト、またセルの文字色を指定する場合はFontオブジェクトを使います。
- セルの背景色を指定する場合は、Interior
- セルの文字色を指定する場合は、Font
これらオブジェクトに続けて、ColorIndexプロパティ、Colorプロパティを指定することで、実際に利用する「色」を指定します。
例を挙げるとすると、下のような感じになります。
- Range(“A1”).Interior.ColorIndex = (指定する背景色)
- Range(“A1”).Interior.Color = (指定する背景色)
- Range(“A1”).Font.ColorIndex = (指定する文字色)
- Range(“A1”).Font.Color = (指定する文字色)
色を指定する方法は、ColorIndexプロパティとColorプロパティ、2種類ありますが、ColorIndexプロパティを使った方が、色の指定が簡単です。
Excelには56色に対応した「インデックス番号」というのがあります。
ColorIndexプロパティでは、その「インデックス番号」を使って色を指定します。
一方、Colorプロパティは56色に対応した「RGB表記」、あるいは「16進数表記」を使って色を指定します。
「RGB表記」と「16進数表記」は、56色に限らず、さまざまな色の変化を細かく指定できます。
ただ、Excel VBAでコーディングしていると、微妙な色の変化を表現して多くの色を使用する機会はあまりないのではないでしょうか。
ColorIndexプロパティは「1」から「56」までの整数を使って、簡単に色を指定できるため、ほとんどの場合、私はColorIndexプロパティを使います。
非常に簡単で、扱いやすく、また56色もあれば十分だからです。
目次
Excel 56色一覧表
以下、56色に対応したインデックス番号、RGB表記、16進数表記の一覧です。
色 | ColorIndex | Color(10進数/RGB) | Color(16進数) |
---|---|---|---|
1 | RGB(0,0,0) | &H000000 | |
2 | RGB(255,255,255) | &HFFFFFF | |
3 | RGB(255,0,0) | &H0000FF | |
4 | RGB(0,255,0) | &H00FF00 | |
5 | RGB(0,0,255) | &HFF0000 | |
6 | RGB(255,255,0) | &H00FFFF | |
7 | RGB(255,0,255) | &HFF00FF | |
8 | RGB(0,255,255) | &HFFFF00 | |
9 | RGB(128,0,0) | &H000080 | |
10 | RGB(0,128,0) | &H008000 | |
11 | RGB(0,0,128) | &H800000 | |
12 | RGB(128,128,0) | &H008080 | |
13 | RGB(128,0,128) | &H800080 | |
14 | RGB(0,128,128) | &H808000 | |
15 | RGB(192,192,192) | &HC0C0C0 | |
16 | RGB(128,128,128) | &H808080 | |
17 | RGB(153,153,255) | &HFF9999 | |
18 | RGB(153,51,102) | &H663399 | |
19 | RGB(255,255,204) | &HCCFFFF | |
20 | RGB(204,255,255) | &HFFFFCC | |
21 | RGB(102,0,102) | &H660066 | |
22 | RGB(255,128,128) | &H8080FF | |
23 | RGB(0,102,204) | &HCC6600 | |
24 | RGB(204,204,255) | &HFFCCCC | |
25 | RGB(0,0,128) | &H800000 | |
26 | RGB(255,0,255) | &HFF00FF | |
27 | RGB(255,255,0) | &H00FFFF | |
28 | RGB(0,255,255) | &HFFFF00 | |
29 | RGB(128,0,128) | &H800080 | |
30 | RGB(128,0,0) | &H000080 | |
31 | RGB(0,128,128) | &H808000 | |
32 | RGB(0,0,255) | &HFF0000 | |
33 | RGB(0,204,255) | &HFFCC00 | |
34 | RGB(204,255,255) | &HFFFFCC | |
35 | RGB(204,255,204) | &HCCFFCC | |
36 | RGB(255,255,153) | &H99FFFF | |
37 | RGB(153,204,255) | &HFFCC99 | |
38 | RGB(255,153,204) | &HCC99FF | |
39 | RGB(204,153,255) | &HFF99CC | |
40 | RGB(255,204,153) | &H99CCFF | |
41 | RGB(51,102,255) | &HFF6633 | |
42 | RGB(51,204,204) | &HCCCC33 | |
43 | RGB(153,204,0) | &H00CC99 | |
44 | RGB(255,204,0) | &H00CCFF | |
45 | RGB(255,153,0) | &H0099FF | |
46 | RGB(255,102,0) | &H0066FF | |
47 | RGB(102,102,153) | &H996666 | |
48 | RGB(150,150,150) | &H969696 | |
49 | RGB(0,51,102) | &H663300 | |
50 | RGB(51,153,102) | &H669933 | |
51 | RGB(0,51,0) | &H003300 | |
52 | RGB(51,51,0) | &H003333 | |
53 | RGB(153,51,0) | &H003399 | |
54 | RGB(153,51,102) | &H663399 | |
55 | RGB(51,51,153) | &H993333 | |
56 | RGB(51,51,51) | &H333333 |
Excel VBAでプログラミングをしていると、その人の好みなのか、使う色って結構決まってくるものです。
このネタをブログ記事にする前、私は色を指定する度にググってインデックス番号を調べていました。
みなさんも色を調べるときに、この記事を参考にしていただければ幸いです。
背景色の指定方法
セル「A1」の背景色に「青」を指定してみましょう。
3つのパターンで書くことができます。
Range("A1").Interior.ColorIndex = 5 Range("A1").Interior.Color = RGB(0,0,255) Range("A1").Interior.Color = "HFF0000"
文字色の指定方法
次にセル「A1」の文字の色に「赤」を指定してみましょう。
3つのパターンで書くことができます。
Range("A1").Font.ColorIndex = 3 Range("A1").Font.Color = RGB(255,0,0) Range("A1").Font.Color = "H0000FF"
背景、文字以外の色指定方法
同じ要領でシートの見出しの色に「赤」を指定してみましょう。
Tabオブジェクトを使用します。
ActiveSheet.Tab.ColorIndex = 3 ActiveSheet.Tab.Color = RGB(255,0,0) ActiveSheet.Tab.Color = "H0000FF"
さらに、セル「A1」の罫線の色に「青」を指定してみましょう。
Bordersオブジェクトを使用します。
Range("A1").Borders.ColorIndex = 5 Range("A1").Borders.Color = RGB(0,0,255) Range("A1").Borders.Color = "HFF0000"
実際の処理結果サンプル
以下のようにコーディングするとどのような結果が得られるか見ていきましょう。
'セルB2を処理します(インデックス番号) With Range("B2") .Interior.ColorIndex = 6 '背景を黄色に .Font.ColorIndex = 3 '文字色を赤色に .Borders.ColorIndex = 5 '罫線を青色に End With 'セルD2を処理します(RGB表記) With Range("D2") .Interior.Color = RGB(255, 255, 0) '背景を黄色に .Font.Color = RGB(255, 0, 0) '文字色を赤色に .Borders.Color = RGB(0, 0, 255) '罫線を青色に End With 'セルF2を処理します(16進数表記) With Range("F2") .Interior.Color = "&H00FFFF" '背景を黄色に .Font.Color = "&H0000FF" '文字色を赤色に .Borders.Color = "&HFF0000" '罫線を青色に End With 'シート見出しの色をインデックス番号を使って赤色にします ActiveSheet.Tab.ColorIndex = 3
下の画像がコーディング結果です。
見ておわかりのとおり、セル「B2」、「D2」、「F2」ともに背景が黄色、文字色が赤色、罫線が青色に設定されています。
また、シート見出しの色も赤色になっていることがわかります。
まとめ
Excelマクロを作成していると、色を付ける場面に遭遇するでしょう。
セルの背景色は「Interior」、セルの文字色は「Font」を使用します。
便利で簡単な「ColorIndex」ならインデックス番号を指定するだけです。
- (セルの背景色)Interior.ColorIndex = (インデックス番号)
- (セルの文字色)Font.ColorIndex = (インデックス番号)
効率の良いコーディング、またメンテナンスしやすいコーディングの参考になれば幸いです。
Excel VBAを駆使して、ルーティンワークの自動化、仕事効率化を目指してまいりましょう。
最後まで読んでいただき、ありがとうございました。