Excel VBAの色の指定方法について ~組込定数, ColorIndex, SchemeColor, RGB指定, ThemeColor~
- 様々な色の指定方法
- 組込定数(VBA)
- xlRgbColor列挙 (Excel)
- ColorIndex:インデックスカラー
- SchemeColor:スキームカラー
- RGB指定 (RGB関数)
- ThemeColor:テーマカラー
- 各指定形式の比較表 (ColorIndex, SchemeColor, 組込定数, RGB形式)
2019.6.26 ThemeColorの内容を追加しました
様々な色の指定方法
Excel VBAでの色の指定方法には下記のようなものがあります。
指定方法 | 概要 |
---|---|
組込定数(VBA) | 定数で基本的な8色を指定できる |
xlRgbColor列挙 | 定数で135色を指定できる |
ColorIndex | インデックスカラー値:0~56で指定。0は塗りつぶしなし 1~56はユーザー指定およびリセットが可能 |
SchemeColor | スキームカラー値:1~80で指定 |
RGB指定 | RGB関数:RGB(赤:Red, 緑:Green, 青:Blue)の各要素を10進数(0~255)または16進数(00~FF)で指定 |
ThemeColor | 定数で12色を指定できる。各々の色に対し、プラス5個ずつの濃淡色を指定できる。配色テーマをあらかじめ設定しておくとテーマ変更で一括で配色を変えられるのが特徴だが、複数テーマの同時使用は出来ない |
ここではまずそれぞれの指定方法について解説し、最後にColorIndex, SchemeColor, 組み込み定数, RGB指定の関係性を表で示します。
組込定数(VBA)
組込定数(VBA)は基本の8色を指定できます。
用途:主にフォントの色指定やセルの枠や背景の色指定に使います。
With Range("B2") .Value = "TEST" .Font.Color = vbBlue '**文字色=青 .Borders.Color = vbMagenta '**枠の色=マゼンタ .Interior.Color = vbYellow '**背景色=黄色 End With vbBlack : 黒 vbWhite : 白 vbRed : 赤 vbGreen : 緑 vbBlue : 青 vbYellow : 黄色 vbMagenta : マゼンタ vbCyan : シアン
xlRgbColor列挙 (Excel)
VBA言語自身の組込定数の他に、Excelにのみ設定されたxlRgbColor列挙として示される色の定数が142色ありますが、色かぶりがあるため、実際は135色です。
docs.microsoft.com
ColorIndex:インデックスカラー
ColorIndexは、1~56の56色と、0(塗り潰しなし)を指定できます。
用途:主にフォントやセルの枠・背景、Chartオブジェクト(グラフ)の色指定に使います。
With Range("B2") .Value = "TEST" .Font.ColorIndex = 5 '**文字色=青 .Borders.ColorIndex = 7 '**枠の色=マゼンタ .Interior.ColorIndex = 24 '**背景色=薄い水色 .Interior.ColorIndex = 0 '**背景色=塗りつぶしなし '**塗りつぶしなしは xlColorIndexNone / xlNone と指定してもよい .Interior.ColorIndex = xlColorIndexNone '**自動 (xlColorIndexAutomatic / xlAutomatic) : 様々な項目の自動値を指定できる '※全ての項目が該当するわけではないので注意 .Font.Color = xlColorIndexAutomatic End With
やや冗長になりますが、別の書き方も出来ます。
ActiveWorkbook.Colors(n) '※n= 1~56 ' ※ Colors(0) はエラーになります '// 下記の2つは同じ内容 Range("A1").Interior.ColorIndex = 24 Range("A1").Interior.Color = ActiveWorkbook.Colors(24)
ColorIndexは編集およびリセットが可能
また、1~56のColorIndexは独自に編集することも可能です。更に、編集した色をデフォルトにリセットすることも可能です。
'例:ColorIndex 1 の色を変更する (デフォルト値 0 = 黒 → 赤 RGB(255, 0, 0)へ ) ActiveWorkbook.Colors(1) = RGB(255, 0, 0) Debug.Print "ColorIndex 1 の色:" & ActiveWorkbook.Colors(1) ColorIndex 1 の色:255 '例:ColorIndexを全てデフォルトにリセットする ActiveWorkbook.ResetColors
SchemeColor:スキームカラー
ShcemeColorは、1~80の80色を指定できますが、いくつかの値は同値です。
用途:主に、Shapeオブジェクトの枠や塗り潰しの色指定に使います。
'**オートシェイプ「円」を描画 With ActiveSheet.Shapes.AddShape(msoShapeOval, 50, 50, 75, 75) '**枠線の設定 With .Line .Visible = msoTrue '**表示する .Weight = 1.5 '**枠線の太さ .ForeColor.SchemeColor = 2 '**枠線の色を「2:赤」にする .Transparency = 0 '**透過しない End With '**塗りつぶしの設定 With .Fill .Visible = msoTrue '**表示する .Patterned msoPatternLargeGrid '**パターン「格子(大)」 .ForeColor.SchemeColor = 4 '**前景色を「4:青」にする .BackColor.SchemeColor = 5 '**背景色を「5:黄色」にする End With End With
RGB指定 (RGB関数)
RGB指定はRGB関数(またはその計算値)により色指定するものです。光の三原色(赤Red, 緑Green, 青Blue)の組み合わせにより色が決まります。各色0~255段階の濃度指定が可能です。
Range("B2").Font.Color = RGB(0, 0, 255) ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
RGB関数とその計算値
RGB形式はRGB関数によってその値を示しており、実際にはRGB関数の計算値と同値です。
RGB関数 : RGB(r, g, b) = r * 256^0 + g * 256^1 + b * 256^ 2 例: RGB(0, 0, 0) = 0 RGB(255, 255, 255) = 255 + 255 * 256 + 255 * 256^2 = 255 + 65280 + 16711680 = 16777215 よって、 Range("B2").Font.Color = RGB(255, 255, 255) は、 Range("B2").Font.Color = 16777215 とも指定できる
計算値からR, G, Bの各要素を取り出す
先ほどと逆の計算を行うことで、画面上の色からRGB各要素の値を求められます。つまり、画面上のセルやオートシェイプなどの色から赤:Red, 緑:Green, 青:Blueの各要素の値を抽出することが可能です。
'**VBAによる計算式 myColor = ActiveCell.Interior.Color R = myColor Mod 256 G = Int(myColor / 256) Mod 256 B = Int(myColor / 256 / 256) '**ワークシート関数による計算式 A1セルに数値が入っているものとすると、 R : =MOD(A1,256) G : =MOD(INT(A1/256),256) B : =INT(B3/256/256)
RGB値を16進数で指定する
RGB値をWebカラー指定のような16進数で指定することも可能です。このとき、6桁の16進数の頭に「&H」を付加して下さい。
Range("B2").Font.Color = RGB(0, 0, 255) Range("B2").Font.Color = &H0000FF
ThemeColor:テーマカラー
テーマカラーは、文字色や背景色の変更の際によく見かけるテーマの配色です。
このテーマの配色は「ページレイアウト」タブの「テーマ」>「配色」から様々な決まった組合せの中から選ぶことが出来、テーマを変更することで一括で色を変更することが可能なものです。
また、配色を自分でカスタマイズすることも可能です。
Range("B2").Font.ThemeColor = xlThemeColorAccent1 Range("B2").Interior.ThemeColor = xlThemeColorAccent4 定数 値 色の名称 xlThemeColorDark1 1 濃色1(背景) xlThemeColorLight1 2 淡色1(テキスト) xlThemeColorDark2 3 濃色2(背景) xlThemeColorLight2 4 淡色2(テキスト) xlThemeColorAccent1 5 アクセント1 xlThemeColorAccent2 6 アクセント2 xlThemeColorAccent3 7 アクセント3 xlThemeColorAccent4 8 アクセント4 xlThemeColorAccent5 9 アクセント5 xlThemeColorAccent6 10 アクセント6 xlThemeColorHyperlink 11 ハイパーリンク xlThemeColorFollowedHyperlink 12 表示済みのハイパーリンク
各指定形式の比較表 (ColorIndex, SchemeColor, 組込定数, RGB形式)
カラーバー | ColorIndex | SchemeColor | 組込定数 | RGB指定 | 16進指定 |
---|---|---|---|---|---|
塗り潰し なし |
0 | - | - | - | - |
1 | 0 or 8 | vbBlack | RGB(0,0,0) | &H000000 | |
2 | 1 or 9 | vbWhite | RGB(255,255,255) | &HFFFFFF | |
3 | 2 or 10 | vbRed | RGB(255,0,0) | &HFF0000 | |
4 | 3 or 11 | vbGreen | RGB(0,255,0) | &H00FF00 | |
5 | 4 or 12 | vbBlue | RGB(0,0,255) | &H0000FF | |
6 | 5 or 13 | vbYellow | RGB(255,255,0) | &HFFFF00 | |
7 | 6 or 14 | vbMagenta | RGB(255,0,255) | &HFF00FF | |
8 | 7 or 15 | vbCyan | RGB(0,255,255) | &H00FFFF | |
9 | 16 | - | RGB(128,0,0) | &H800000 | |
10 | 17 | - | RGB(0,128,0) | &H008000 | |
11 | 18 | - | RGB(0,0,128) | &H000080 | |
12 | 19 | - | RGB(128,128,0) | &H808000 | |
13 | 20 | - | RGB(128,0,128) | &H800080 | |
14 | 21 | - | RGB(0,128,128) | &H008080 | |
15 | 22 | - | RGB(192,192,192) | &HC0C0C0 | |
16 | 23 | - | RGB(128,128,128) | &H808080 | |
17 | 24 | - | RGB(153,153,255) | &H9999FF | |
18 | 25 | - | RGB(153,51,102) | &H993366 | |
19 | 26 | - | RGB(255,255,204) | &HFFFFCC | |
20 | 27 | - | RGB(204,255,255) | &HCCFFFF | |
21 | 28 | - | RGB(102,0,102) | &H660066 | |
22 | 29 | - | RGB(255,128,128) | &HFF8080 | |
23 | 30 | - | RGB(0,102,204) | &H0066CC | |
24 | 31 | - | RGB(204,204,255) | &HCCCCFF | |
25 | 32 | - | RGB(0,0,128) | &H000080 | |
26 | 33 | - | RGB(255,0,255) | &HFF00FF | |
27 | 34 | - | RGB(255,255,0) | &HFFFF00 | |
28 | 35 | - | RGB(0,255,255) | &H00FFFF | |
29 | 36 | - | RGB(128,0,128) | &H800080 | |
30 | 37 | - | RGB(128,0,0) | &H800000 | |
31 | 38 | - | RGB(0,128,128) | &H008080 | |
32 | 39 | - | RGB(0,0,255) | &H0000FF | |
33 | 40 | - | RGB(0,204,255) | &H00CCFF | |
34 | 41 | - | RGB(204,255,255) | &HCCFFFF | |
35 | 42 | - | RGB(204,255,204) | &HCCFFCC | |
36 | 43 | - | RGB(255,255,153) | &HFFFF99 | |
37 | 44 | - | RGB(153,204,255) | &H99CCFF | |
38 | 45 | - | RGB(255,153,204) | &HFF99CC | |
39 | 46 | - | RGB(204,153,255) | &HCC99FF | |
40 | 47 | - | RGB(255,204,153) | &HFFCC99 | |
41 | 48 | - | RGB(51,102,255) | &H3366FF | |
42 | 49 | - | RGB(51,204,204) | &H33CCCC | |
43 | 50 | - | RGB(153,204,0) | &H99CC00 | |
44 | 51 | - | RGB(255,204,0) | &HFFCC00 | |
45 | 52 | - | RGB(255,153,0) | &HFF9900 | |
46 | 53 | - | RGB(255,102,0) | &HFF6600 | |
47 | 54 | - | RGB(102,102,153) | &H666699 | |
48 | 55 | - | RGB(150,150,150) | &H969696 | |
49 | 56 | - | RGB(0,51,102) | &H003366 | |
50 | 57 | - | RGB(51,153,102) | &H339966 | |
51 | 58 | - | RGB(0,51,0) | &H003300 | |
52 | 59 | - | RGB(51,51,0) | &H333300 | |
53 | 60 | - | RGB(153,51,0) | &H993300 | |
54 | 61 | - | RGB(153,51,102) | &H993366 | |
55 | 62 | - | RGB(51,51,153) | &H333399 | |
56 | 63 | - | RGB(51,51,51) | &H333333 | |
カラーバー | ColorIndex | SchemeColor | 組込定数 | RGB指定 | 16進指定 |
- | 64 | - | RGB(0,0,0) | &H000000 | |
- | 65 | - | RGB(255,255,255) | &HFFFFFF | |
- | 66 | - | RGB(100,100,100) | &H646464 | |
- | 67 | - | RGB(240,240,240) | &HF0F0F0 | |
- | 68 | - | RGB(0,0,0) | &H000000 | |
- | 69 | - | RGB(255,255,255) | &HFFFFFF | |
- | 70 | - | RGB(160,160,160) | &HA0A0A0 | |
- | 71 | - | RGB(0,120,215) | &H0078D7 | |
- | 72 | - | RGB(0,0,0) | &H000000 | |
- | 73 | - | RGB(200,200,200) | &HC8C8C8 | |
- | 74 | - | RGB(55,55,55) | &H373737 | |
- | 75 | - | RGB(255,255,255) | &HFFFFFF | |
- | 76 | - | RGB(100,100,100) | &H646464 | |
- | 77 | - | RGB(0,0,0) | &H000000 | |
- | 78 | - | RGB(255,255,255) | &HFFFFFF | |
- | 79 | - | RGB(0,0,0) | &H000000 | |
- | 80 | - | RGB(255,255,225) | &HFFFFFF |