【VBA入門】ColorIndexの使い方と色見本一覧(色番号、RGB)

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

[実行後]
vba_color_index22 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

[実行後]
vba_color_index32 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

[実行後]
vba_color_index42 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

[実行後]
vba_color_index52 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

[実行後]
vba_color_index62 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

[実行後]
vba_color_index72 0

この、サンプルコードでは、取得した色のインデックスを確認するために、Range(“C3”).Value = idxとしてセルC3の値に設定しています。

また、取得した色を確認するために、Range(“C3”).Interior.ColorIndex = idxとしてセルC3の背景色に設定しています。

実行後の画像からは取得したシート見出しの色である赤と、そのインデックス番号の3を確認することができます。

VBAの将来性

VBAのスキルを学んで業務を効率化したい

このように思っている人は多いでしょう。

VBAの用途はさまざまで、

  • VBAのスキルがあれば転職できるのでは?
  • 業務効率化のスキルは需要が高そうだから

などが上げられます。確かに、業務効率化はどこの企業も目指していて、需要が高いように見えます。ただ、VBAを扱えることが強みになるかといわれると、すこし疑問があります。

VBAは基本的にエクセル上でしか使用することができません。しかし、最近では社内書式をスプレッドシートで管理している企業も増えており、今後エクセル自体の需要が少なくなってしまう可能性も考えられます。

そうなってしまうと、VBAを習得しても活躍の場が限られてしまいますよね。そう考えると将来的にVBAの需要はあまり高くないといえます。

ではVBAを学んでいる人はどうすればいいのでしょう。VBAの将来性や今後の対策などをこちらの記事でまとめているのでぜひご確認ください。

まとめ

いかがでしたか?

今回は、ColorIndexを使って色を指定する方法について解説しました。

あらかじめ、パレットを編集しておくことでよく使う色をColorIndexで簡単に指定できるようになります。さらに、ExcelVBAで色を一括で設定するようにしておけば、見た目を変更したい場合にパレットを編集するだけで済みます。

ColorIndexは扱える色数が56色と少なく感じるかもしれませんが、このように便利な側面もあります。

もし、ColorIndexを使って色を指定する機会があれば、この記事を思い出してみてください。

この記事を書いた人

フリーランスのエンジニアです。
最近では、プログラミング関連の記事を作成するライターとしても活動しています。

趣味と業務の両方でプログラミング言語をいくつも学んできたので
その経験を活かして分かりやすい記事を作成できればと考えています。

目次