Excel VBAの覚え書([セルの書式設定]-[色](Colorプロパティ、ColorIndexプロパティ)編)

2024-01-07

■Colorプロパティにおける色の指定方法

Colorプロパティは、BordersコレクションBorderオブジェクトInteriorオブジェクトFontオブジェクト等、多くのオブジェクトで提供されているプロパティですが、Microsoftのドキュメントを読むと、「RGB関数を使用して色の値を指定」というようなことしか書かれていないので、事実関係を整理しておきたいと思います。

RGB値とは

RGB値は、光の3原色である「赤(R)」「緑(G)」「青(B)」をそれぞれ1バイト(合計3バイト)の数値で表した値です。

赤(R) 緑(G) 青(B)

ですが、筆者が使用しているPC環境はWindowsなので、リトル・エンディアンとなっており、実際のバイト順序は「青(B)」→「緑(G)」→「赤(R)」の順になっています。

青(B) 緑(G) 赤(R)

RGB関数を使用したColorプロパティの指定方法

色を「赤」に設定したい場合、Colorプロパティで指定したい値は「R=255(&HFF),G=0(&H00),B=0(&H00)」ですので、RGB関数を使用すると以下のようになります。

(RGB関数を使用し、10進数で指定)

  1. obj.Color = RGB(255, 0, 0)

(RGB関数を使用し、16進数で指定)

  1. obj.Color = RGB(&HFF, &H0, &H0)

RGB関数を使用しないColorプロパティの指定方法

前項と同様に色を「赤(R=255(&HFF),G=0(&H00),B=0(&H00))」に設定したい場合、Colorプロパティで指定する値は以下の計算式で求めます。

  • RGB値 = Rの値 + Gの値 × 256 + Bの値 × 65536

(RGB関数を使用せず、10進数で指定)

  1. obj.Color = 255

(RGB関数を使用せず、16進数で指定)

  1. obj.Color = &HFF

Colorプロパティの値からRの値、Gの値、Bの値を取出す方法

Colorプロパティで取得したRGB値(Long型の整数値)は、以下の計算式でRの値、Gの値、Bの値に分解できます。

  • Rの値 = RGB値 Mod 256
  • Gの値 = Int(RGB値 / 256) Mod 256
  • Bの値 = Int(RGB値 / 65536)

サンプル・プログラム~塗りつぶしたセルのRGB値を表示する処理

予め塗りつぶしておいたA1セルのColorプロパティを参照し、Rの値、Gの値、Bの値、RGB値を表示するExcelツールです。

Rの値
(10進数)
Gの値
(10進数)
Bの値
(10進数)
RGB値
(10進数)
Rの値
(16進数)
Gの値
(16進数)
Bの値
(16進数)
RGB値
(16進数)
  1. Dim sht As Worksheet
  2. Dim RGB As Long
  3. Private Sub Sample1()
  4.     Set sht = ActiveSheet
  5.     RGB = sht.Range(“A1").Interior.Color
  6.     sht.Range(“B1") = RGB Mod 256
  7.     sht.Range(“C1") = Int(RGB / 256) Mod 256
  8.     sht.Range(“D1") = Int(RGB / 65536)
  9.     sht.Range(“E1") = RGB
  10.     sht.Range(“B2") = Right(“0" & Hex(sht.Range(“B1")), 2)
  11.     sht.Range(“C2") = Right(“0" & Hex(sht.Range(“C1")), 2)
  12.     sht.Range(“D2") = Right(“0" & Hex(sht.Range(“D1")), 2)
  13.     sht.Range(“E2") = Right(“00000" & Hex(sht.Range(“E1")), 6)
  14. End Sub

XlRgbColor列挙体を使用したColorプロパティの指定方法

XlRgbColor列挙体で144色のRGB値が定義されていますので、この定数を使用してColorプロパティを設定することができます。

名前 R G B R G B
rgbAliceBlue 240 248 255 &HF0 &HF8 &HFF
rgbAntiqueWhite 250 235 215 &HFA &HEB &HD7
rgbAqua 0 255 255 &H00 &HFF &HFF
rgbAquamarine 127 255 212 &H7F &HFF &HD4
rgbAzure 240 255 255 &HF0 &HFF &HFF
rgbBeige 245 245 220 &HF5 &HF5 &HDC
rgbBisque 255 228 196 &HFF &HE4 &HC4
rgbBlack 0 0 0 &H00 &H00 &H00
rgbBlanchedAlmond 255 235 205 &HFF &HEB &HCD
rgbBlue 0 0 255 &H00 &H00 &HFF
rgbBlueViolet 138 43 226 &H8A &H2B &HE2
rgbBrown 165 42 42 &HA5 &H2A &H2A
rgbBurlyWood 222 184 135 &HDE &HB8 &H87
rgbCadetBlue 95 158 160 &H5F &H9E &HA0
rgbChartreuse 127 255 0 &H7F &HFF &H00
rgbCoral 255 127 80 &HFF &H7F &H50
rgbCornflowerBlue 100 149 237 &H64 &H95 &HED
rgbCornsilk 255 248 220 &HFF &HF8 &HDC
rgbCrimson 220 20 60 &HDC &H14 &H3C
rgbDarkBlue 0 0 139 &H00 &H00 &H8B
rgbDarkCyan 0 139 139 &H00 &H8B &H8B
rgbDarkGoldenrod 184 134 11 &HB8 &H86 &H0B
rgbDarkGray 169 169 169 &HA9 &HA9 &HA9
rgbDarkGreen 0 100 0 &H00 &H64 &H00
rgbDarkGrey 169 169 169 &HA9 &HA9 &HA9
rgbDarkKhaki 189 183 107 &HBD &HB7 &H6B
rgbDarkMagenta 139 0 139 &H8B &H00 &H8B
rgbDarkOliveGreen 85 107 47 &H55 &H6B &H2F
rgbDarkOrange 255 140 0 &HFF &H8C &H00
rgbDarkOrchid 153 50 204 &H99 &H32 &HCC
rgbDarkRed 139 0 0 &H8B &H00 &H00
rgbDarkSalmon 233 150 122 &HE9 &H96 &H7A
rgbDarkSeaGreen 143 188 143 &H8F &HBC &H8F
rgbDarkSlateBlue 72 61 139 &H48 &H3D &H8B
rgbDarkSlateGray 47 79 79 &H2F &H4F &H4F
rgbDarkSlateGrey 47 79 79 &H2F &H4F &H4F
rgbDarkTurquoise 0 206 209 &H00 &HCE &HD1
rgbDarkViolet 148 0 211 &H94 &H00 &HD3
rgbDeepPink 255 20 147 &HFF &H14 &H93
rgbDeepSkyBlue 0 191 255 &H00 &HBF &HFF
rgbDimGray 105 105 105 &H69 &H69 &H69
rgbDimGrey 105 105 105 &H69 &H69 &H69
rgbDodgerBlue 30 144 255 &H1E &H90 &HFF
rgbFireBrick 178 34 34 &HB2 &H22 &H22
rgbFloralWhite 255 250 240 &HFF &HFA &HF0
rgbForestGreen 34 139 34 &H22 &H8B &H22
rgbFuchsia 255 0 255 &HFF &H00 &HFF
rgbGainsboro 220 220 220 &HDC &HDC &HDC
rgbGhostWhite 248 248 255 &HF8 &HF8 &HFF
rgbGold 255 215 0 &HFF &HD7 &H00
rgbGoldenrod 218 165 32 &HDA &HA5 &H20
rgbGray 128 128 128 &H80 &H80 &H80
rgbGreen 0 128 0 &H00 &H80 &H00
rgbGreenYellow 173 255 47 &HAD &HFF &H2F
rgbGrey 128 128 128 &H80 &H80 &H80
rgbHoneydew 240 255 240 &HF0 &HFF &HF0
rgbHotPink 255 105 180 &HFF &H69 &HB4
rgbIndianRed 205 92 92 &HCD &H5C &H5C
rgbIndigo 75 0 130 &H4B &H00 &H82
rgbIvory 255 255 240 &HFF &HFF &HF0
rgbKhaki 240 230 140 &HF0 &HE6 &H8C
rgbLavender 230 230 250 &HE6 &HE6 &HFA
rgbLavenderBlush 255 240 245 &HFF &HF0 &HF5
rgbLawnGreen 124 252 0 &H7C &HFC &H00
rgbLemonChiffon 255 250 205 &HFF &HFA &HCD
rgbLightBlue 173 216 230 &HAD &HD8 &HE6
rgbLightCoral 240 128 128 &HF0 &H80 &H80
rgbLightCyan 0 139 139 &H00 &H8B &H8B
rgbLightGoldenrodYellow 250 250 210 &HFA &HFA &HD2
rgbLightGray 211 211 211 &HD3 &HD3 &HD3
rgbLightGreen 144 238 144 &H90 &HEE &H90
rgbLightGrey 211 211 211 &HD3 &HD3 &HD3
rgbLightPink 255 182 193 &HFF &HB6 &HC1
rgbLightSalmon 255 160 122 &HFF &HA0 &H7A
rgbLightSeaGreen 32 178 170 &H20 &HB2 &HAA
rgbLightSkyBlue 135 206 250 &H87 &HCE &HFA
rgbLightSlateGray 119 136 153 &H77 &H88 &H99
rgbLightSlateGrey 119 136 153 &H77 &H88 &H99
rgbLightSteelBlue 176 196 222 &HB0 &HC4 &HDE
rgbLightYellow 255 255 224 &HFF &HFF &HE0
rgbLime 0 255 0 &H00 &HFF &H00
rgbLimeGreen 50 205 50 &H32 &HCD &H32
rgbLinen 250 240 230 &HFA &HF0 &HE6
rgbMaroon 128 0 0 &H80 &H00 &H00
rgbMediumAquamarine 102 255 170 &H66 &HFF &HAA
rgbMediumBlue 0 0 205 &H00 &H00 &HCD
rgbMediumOrchid 186 85 211 &HBA &H55 &HD3
rgbMediumPurple 147 112 219 &H93 &H70 &HDB
rgbMediumSeaGreen 60 179 113 &H3C &HB3 &H71
rgbMediumSlateBlue 123 104 238 &H7B &H68 &HEE
rgbMediumSpringGreen 0 250 154 &H00 &HFA &H9A
rgbMediumTurquoise 72 209 204 &H48 &HD1 &HCC
rgbMediumVioletRed 199 21 133 &HC7 &H15 &H85
rgbMidnightBlue 25 25 112 &H19 &H19 &H70
rgbMintCream 245 255 250 &HF5 &HFF &HFA
rgbMistyRose 255 228 225 &HFF &HE4 &HE1
rgbMoccasin 255 228 181 &HFF &HE4 &HB5
rgbNavajoWhite 255 222 173 &HFF &HDE &HAD
rgbNavy 0 0 128 &H00 &H00 &H80
rgbNavyBlue 0 0 128 &H00 &H00 &H80
rgbOldLace 253 245 230 &HFD &HF5 &HE6
rgbOlive 128 128 0 &H80 &H80 &H00
rgbOliveDrab 107 142 35 &H6B &H8E &H23
rgbOrange 255 165 0 &HFF &HA5 &H00
rgbOrangeRed 255 69 0 &HFF &H45 &H00
rgbOrchid 218 112 214 &HDA &H70 &HD6
rgbPaleGoldenrod 238 232 107 &HEE &HE8 &H6B
rgbPaleGreen 152 251 152 &H98 &HFB &H98
rgbPaleTurquoise 175 238 238 &HAF &HEE &HEE
rgbPaleVioletRed 219 112 147 &HDB &H70 &H93
rgbPapayaWhip 255 239 213 &HFF &HEF &HD5
rgbPeachPuff 255 218 185 &HFF &HDA &HB9
rgbPeru 205 133 63 &HCD &H85 &H3F
rgbPink 255 192 203 &HFF &HC0 &HCB
rgbPlum 221 160 221 &HDD &HA0 &HDD
rgbPowderBlue 176 224 230 &HB0 &HE0 &HE6
rgbPurple 128 0 128 &H80 &H00 &H80
rgbRed 255 0 0 &HFF &H00 &H00
rgbRosyBrown 188 143 143 &HBC &H8F &H8F
rgbRoyalBlue 65 105 225 &H41 &H69 &HE1
rgbSalmon 250 128 114 &HFA &H80 &H72
rgbSandyBrown 244 164 96 &HF4 &HA4 &H60
rgbSeaGreen 46 139 87 &H2E &H8B &H57
rgbSeashell 255 245 238 &HFF &HF5 &HEE
rgbSienna 160 82 45 &HA0 &H52 &H2D
rgbSilver 192 192 192 &HC0 &HC0 &HC0
rgbSkyBlue 135 206 235 &H87 &HCE &HEB
rgbSlateBlue 106 90 205 &H6A &H5A &HCD
rgbSlateGray 112 128 144 &H70 &H80 &H90
rgbSlateGrey 112 128 144 &H70 &H80 &H90
rgbSnow 255 250 250 &HFF &HFA &HFA
rgbSpringGreen 0 255 127 &H00 &HFF &H7F
rgbSteelBlue 70 130 180 &H46 &H82 &HB4
rgbTan 210 180 140 &HD2 &HB4 &H8C
rgbTeal 0 128 128 &H00 &H80 &H80
rgbThistle 216 191 216 &HD8 &HBF &HD8
rgbTomato 255 99 71 &HFF &H63 &H47
rgbTurquoise 64 224 208 &H40 &HE0 &HD0
rgbViolet 238 130 238 &HEE &H82 &HEE
rgbWheat 245 222 179 &HF5 &HDE &HB3
rgbWhite 255 255 255 &HFF &HFF &HFF
rgbWhiteSmoke 245 245 245 &HF5 &HF5 &HF5
rgbYellow 255 255 0 &HFF &HFF &H00
rgbYellowGreen 154 205 50 &H9A &HCD &H32

■ColorIndexプロパティにおける色の指定方法

ColorIndexプロパティは、BordersコレクションBorderオブジェクトInteriorオブジェクトFontオブジェクト等、多くのオブジェクトで提供されているプロパティですが、Microsoftのドキュメントを読むと、「カラー・パレットのインデックス、または定数で指定」というような記載になっています。

ここで『定数』というのはXlColorIndex列挙体を指しており、定義されている値はxlColorIndexAutomatic(自動設定)とxlColorIndexNone(色なし)の2つしかありませんので、次項ではカラー・パレットについて説明します。

Excelのカラー・パレットとは

Excelのカラー・パレットには、標準で下表の56色が定義されていますので、以下のコーディング例のようにインデックス番号を指定するだけで、色を設定することができます。

  1. obj.ColorIndex = インデックス番号

(カラー・パレットで定義されている色)

番号 R G B R G B
1 0 0 0 &H00 &H00 &H00
2 255 255 255 &HFF &HFF &HFF
3 255 0 0 &HFF &H00 &H00
4 0 255 0 &H00 &HFF &H00
5 0 0 255 &H00 &H00 &HFF
6 255 255 0 &HFF &HFF &H00
7 255 0 255 &HFF &H00 &HFF
8 0 255 255 &H00 &HFF &HFF
9 128 0 0 &H80 &H00 &H00
10 0 128 0 &H00 &H80 &H00
11 0 0 128 &H00 &H00 &H80
12 128 128 0 &H80 &H80 &H00
13 128 0 128 &H80 &H00 &H80
14 0 128 128 &H00 &H80 &H80
15 192 192 192 &HC0 &HC0 &HC0
16 128 128 128 &H80 &H80 &H80
17 153 153 255 &H99 &H99 &HFF
18 153 51 102 &H99 &H33 &H66
19 255 255 204 &HFF &HFF &HCC
20 204 255 255 &HCC &HFF &HFF
21 102 0 102 &H66 &H00 &H66
22 255 128 128 &HFF &H80 &H80
23 0 102 204 &H00 &H66 &HCC
24 204 204 255 &HCC &HCC &HFF
25 0 0 128 &H00 &H00 &H80
26 255 0 255 &HFF &H00 &HFF
27 255 255 0 &HFF &HFF &H00
28 0 255 255 &H00 &HFF &HFF
29 128 0 128 &H80 &H00 &H80
30 128 0 0 &H80 &H00 &H00
31 0 128 128 &H00 &H80 &H80
32 0 0 255 &H00 &H00 &HFF
33 0 204 255 &H00 &HCC &HFF
34 204 255 255 &HCC &HFF &HFF
35 204 255 204 &HCC &HFF &HCC
36 255 255 153 &HFF &HFF &H99
37 153 204 255 &H99 &HCC &HFF
38 255 153 204 &HFF &H99 &HCC
39 204 153 255 &HCC &H99 &HFF
40 255 204 153 &HFF &HCC &H99
41 51 102 255 &H33 &H66 &HFF
42 51 204 204 &H33 &HCC &HCC
43 153 204 0 &H99 &HCC &H00
44 255 204 0 &HFF &HCC &H00
45 255 153 0 &HFF &H99 &H00
46 255 102 0 &HFF &H66 &H00
47 102 102 153 &H66 &H66 &H99
48 150 150 150 &H96 &H96 &H96
49 0 51 102 &H00 &H33 &H66
50 51 153 102 &H33 &H99 &H66
51 0 51 0 &H00 &H33 &H00
52 51 51 0 &H33 &H33 &H00
53 153 51 0 &H99 &H33 &H00
54 153 51 102 &H99 &H33 &H66
55 51 51 153 &H33 &H33 &H99
56 51 51 51 &H33 &H33 &H33

サンプル・プログラム~カラー・パレットで定義された色のRGB値を表示する処理

ColorIndexプロパティにインデックス番号を指定してA列のセルを塗りつぶした後、ColorプロパティでRGB値を取出し、R、G、B別に値を表示するExcelツールです。
(前項の表は、このツールの出力結果を成形したものです)

  1. Dim sht As Worksheet
  2. Dim wRGB As Long
  3. Dim R, G, B As Integer
  4. Dim i, rcnt As Integer
  5. Private Sub Sample2()
  6.     Set sht = ActiveSheet
  7.     sht.Cells.Clear
  8.     sht.Range(“A1") = “Color"
  9.     sht.Range(“B1") = “Index"
  10.     sht.Range(“C1") = “R(dec)"
  11.     sht.Range(“D1") = “G(dec)"
  12.     sht.Range(“E1") = “B(dec)"
  13.     sht.Range(“F1") = “R(hex)"
  14.     sht.Range(“G1") = “G(hex)"
  15.     sht.Range(“H1") = “B(hex)"
  16.     sht.Range(“I1") = “RGB(hex)"
  17.     sht.Range(“A1:I1").Interior.Color = RGB(128, 128, 128)
  18.     sht.Range(“A1:I1").Font.Bold = True
  19.     sht.Range(“A1:I1").HorizontalAlignment = xlCenter
  20.     rcnt = 1
  21.     For i = 1 To 56
  22.         rcnt = rcnt + 1
  23.         sht.Cells(rcnt, 1).Interior.ColorIndex = i
  24.         sht.Cells(rcnt, 2) = i
  25.         wRGB = sht.Cells(rcnt, 1).Interior.Color
  26.         R = wRGB Mod 256
  27.         G = Int(wRGB / 256) Mod 256
  28.         B = Int(wRGB / 65536)
  29.         sht.Cells(rcnt, 3) = R
  30.         sht.Cells(rcnt, 4) = G
  31.         sht.Cells(rcnt, 5) = B
  32.         sht.Cells(rcnt, 6) = “&H" & Right(“0" & Hex(R), 2)
  33.         sht.Cells(rcnt, 7) = “&H" & Right(“0" & Hex(G), 2)
  34.         sht.Cells(rcnt, 8) = “&H" & Right(“0" & Hex(B), 2)
  35.         sht.Cells(rcnt, 9) = “&H" & Right(“0" & Hex(R), 2) & Right(“0" & Hex(G), 2) & Right(“0" & Hex(B), 2)
  36.     Next i
  37. End Sub

 

国本温子(著),緑川吉行(著),できるシリーズ編集部(著)
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ

大村あつし(著),古川順平(著)
出版社:技術評論社
発売日:2021/1/9
単行本(ソフトカバー):A5判/800ページ

高橋宣成(著)
出版社:技術評論社
発売日:2019/11/25
単行本(ソフトカバー):B5変形判/576ページ

覚え書

Posted by hides