ExcelVBAでは、ColorIndexを使って色を指定することができます。
この記事では、ColorIndexを使って色を指定する方法について
- ColorIndexプロパティとは
- ColorIndexで色を設定する方法
- ColorIndexで色を取得する方法
など基本的な内容から応用的な使い方についても解説していきます。
ColorIndexを使うことで、あらかじめ設定されている色を簡単に指定できます。また、指定する色を変更することもできます。
よく使う色を設定しておけば、簡単に指定できるようになるため重宝します。
それでは、例を交えながら詳しく解説していきます。
ColorIndexプロパティとは
ExcelVBAは、56色を扱うことのできるパレットを持っています。
パレットの色に対応するインデックス番号がColorIndexです。ColorIndexとデフォルトパレットの色の対応は、次の表の通りです。
ColorIndex |
色 |
10進数:RGB(赤, 緑, 青) |
16進数:H青緑赤 |
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のオプションから、パレットの確認と変更ができます。
次の3枚の画像のように[ファイル→オプション→保存→色]と選択します。
![vba_color_index11 0]()
![vba_color_index12 0]()
![vba_color_index13 0]()
そうすることで、次のような色ウィンドウが開きます。
![vba_color_index14 0]()
色ウィンドウに表示されるパレットとColorIndexの関係は、次の画像のようになっています。
![vba_color_index15 0]()
パレットに追加した色は、ColorIndexを使用して簡単に指定できるようになります。
よく使う色をパレットに設定しておくと便利ですね。
ColorIndexで色を設定する方法
文字やセル、シート見出しについてはColorIndexで色を設定することができます。
Fontで文字色を設定する方法
Fontで文字色を設定するためには、次のように記述します。
Range("セル名").Font.ColorIndex = 色のインデックス番号
次のサンプルコードでは、セルB2の文字にパレットの3番目の色を設定するためにRange("B2").Font.ColorIndex = 3としています。
Sub Sample
Range("B2").Font.ColorIndex = 3
End Sub
[実行前]
![vba_color_index21 0]()
[実行後]
実行後の画像から、文字色がパレットの3番目の色である赤に変化したことを確認することができます。
Interiorでセルの背景色を設定する方法
Interiorでセルの背景色を設定するためには、次のように記述します。
Range("セル名").Interior.ColorIndex = 色のインデックス番号
次のサンプルコードでは、セルB2の背景にパレットの3番目の色を設定するためにRange("B2").Interior.ColorIndex = 3としています。
Sub Sample
Range("B2").Interior.ColorIndex = 3
End Sub
[実行前]
![vba_color_index21 0]()
[実行後]
実行後の画像から、セルの背景色がパレットの3番目の色である赤に変化したことを確認することができます。
Tabでシート見出しの色を設定する方法
Tabでシート見出しの色を設定するためには、次のように記述します。
Worksheets("シート名").Tab.ColorIndex = 色のインデックス番号
次のサンプルコードでは、Sheet1の見出しにパレットの3番目の色を設定するためにWorksheets("Sheet1").Tab.ColorIndex = 3としています。
Sub Sample()
Worksheets("Sheet1").Tab.ColorIndex = 3
End Sub
[実行前]
![vba_color_index41 0]()
[実行後]
実行後の画像から、シート見出しの色がパレットの3番目の色である赤に変化したことを確認することができます。
ColorIndexで色のインデックス番号を取得する
文字やセル、シート見出しについてはColorIndexで色を取得することができます。
Fontで文字色のインデックス番号を取得する
Fontで文字色を取得するためには、次のように記述します。
Dim idx As Integer
idx = Range("セル名").Font.ColorIndex
次のサンプルコードではセルB2の文字色を取得するためidx = Range("B2").Font.ColorIndexとしています。
Sub Sample()
Dim idx As Integer
idx = Range("B2").Font.ColorIndex
Range("C3").Value = idx
Range("C3").Interior.ColorIndex = idx
End Sub
[実行前]
![vba_color_index51 0]()
[実行後]
この、サンプルコードでは、取得した色のインデックスを確認するために、Range("C3").Value = idxとしてセルC3の値に設定しています。
また、取得した色を確認するためにRange("C3").Interior.ColorIndex = idxとしてセルC3の背景色に設定しています。
実行後の画像からは取得した文字色のと、そのインデックス番号の3を確認することができます。
Interiorでセルの背景色のインデックス番号を取得する
Interiorでセルの背景色を取得するためには、次のように記述します。
Dim idx As Integer
idx = Range("セル名").Interior.ColorIndex
次のサンプルコードでは、セルB2の背景色を取得するためidx = Range("B2").Interior.ColorIndexとしています。
Sub Sample()
Dim idx As Integer
idx = Range("B2").Interior.ColorIndex
Range("C3").Value = idx
Range("C3").Interior.ColorIndex = idx
End Sub
[実行前]
![vba_color_index61 0]()
[実行後]
この、サンプルコードでは、取得した色のインデックスを確認するために、Range("C3").Value = idxとしてセルC3の値に設定しています。
また、取得した色を確認するために、Range("C3").Interior.ColorIndex = idxとしてセルC3の背景色に設定しています。
実行後の画像からは取得した背景色である赤と、そのインデックス番号の3を確認することができます。
Tabでシート見出しの色のインデックス番号を取得する
Tabでシート見出しの色を取得するためには、次のように記述します。
Dim idx As Integer
idx = Worksheets("シート名").Tab.ColorIndex
次のサンプルコードでは、Sheet1の見出しの色を取得するためidx = Worksheets("Sheet1").Tab.ColorIndexとしています。
Sub Sample()
Dim idx As Integer
idx = Worksheets("Sheet1").Tab.ColorIndex
Range("C3").Value = idx
Range("C3").Interior.ColorIndex = idx
End Sub
[実行前]
![vba_color_index71 0]()
[実行後]
この、サンプルコードでは、取得した色のインデックスを確認するために、Range("C3").Value = idxとしてセルC3の値に設定しています。
また、取得した色を確認するために、Range("C3").Interior.ColorIndex = idxとしてセルC3の背景色に設定しています。
実行後の画像からは取得したシート見出しの色である赤と、そのインデックス番号の3を確認することができます。
VBAの将来性
VBAのスキルを学んで業務を効率化したい
このように思っている人は多いでしょう。
VBAの用途はさまざまで、
- VBAのスキルがあれば転職できるのでは?
- 業務効率化のスキルは需要が高そうだから
などが上げられます。確かに、業務効率化はどこの企業も目指していて、需要が高いように見えます。ただ、VBAを扱えることが強みになるかといわれると、すこし疑問があります。
VBAは基本的にエクセル上でしか使用することができません。しかし、最近では社内書式をスプレッドシートで管理している企業も増えており、今後エクセル自体の需要が少なくなってしまう可能性も考えられます。
そうなってしまうと、VBAを習得しても活躍の場が限られてしまいますよね。そう考えると将来的にVBAの需要はあまり高くないといえます。
ではVBAを学んでいる人はどうすればいいのでしょう。VBAの将来性や今後の対策などをこちらの記事でまとめているのでぜひご確認ください。
VBAより将来的にWebプログラミング言語がおすすめな3つの理由
更新日 : 2019年10月9日
まとめ
いかがでしたか?
今回は、ColorIndexを使って色を指定する方法について解説しました。
あらかじめ、パレットを編集しておくことでよく使う色をColorIndexで簡単に指定できるようになります。さらに、ExcelVBAで色を一括で設定するようにしておけば、見た目を変更したい場合にパレットを編集するだけで済みます。
ColorIndexは扱える色数が56色と少なく感じるかもしれませんが、このように便利な側面もあります。
もし、ColorIndexを使って色を指定する機会があれば、この記事を思い出してみてください。