No.005
セルに塗りつぶしの色を設定する 《Interior.Color》
2003/2007/2010/2013
VBAでセルに色を設定する場合、簡単に書くと次の書式となります。
対象セル.Interior.ColorIndex = 1~56
対象セル.Interior.Color = 設定値
ColorIndexプロパティは今でも使用できますが、56色しか扱えなかったExcel2003で特に活用されていたもので、端末の設定により色番号に対応する色を変更できますので、絶対的な色設定ではありません。
Excel2007以降は1600万色に対応したため、Colorプロパティでご案内しようと思います。
Colorプロパティは設定値のパターンがいろいろありますが、とにかく簡単に、赤や青といった色を設定したい場合は、設定値に定数を使うのが便利です。
Range("A1").Interior.Color = vbRed
これはセルの色を赤にする場合です。代表的な色には定数が用意されています。
- vbBlack …黒
- vbRed …赤
- vbGreen …緑
- vbYellow …黄
- vbBlue …青
- vbMagenta …マゼンタ
- vbCyan …シアン
- vbWhite …白
さて、もっと違う色を使いたい場合です。
Colorプロパティは、設定値にRGB関数を利用します。
RGB関数の数式は、
RGB(赤, 緑, 青)
という3つの引数で、1~255までの値を取ります。
Colorプロパティでは、設定値に関数自体を書いてもいいし、関数の答えを書いても構いません。
例えば赤にしたい場合、「RGB(255, 0, 0)」で、その答えは「255」です。
そこで、Colorプロパティは次の3つの設定値が可能です。
関数をそのまま指定します。
Range("A1").Interior.Color = RGB(255, 0, 0)
RGB関数の10進数の答えを指定します。
Range("A1").Interior.Color = 255
「&H」のあとRGB関数の16進数の答えを指定します。
Range("A1").Interior.Color = &H0000FF
赤ならばわかりやすくてよいですが、他の色の場合はRGB関数の計算というのは膨大な数値となるため(今回はその計算はご案内しません)、1番目の関数をそのまま指定する方法で記述するか、一度その色をセルに設定してRGBの値を調べるか、マクロ記録でRGB関数の答えを取得して使うのがいいと思います。
任意の色のRGBの値を調べるには、次の手順が便利です。
- 任意のセルに色を付けて、そのセルを選択します。
- ショートカット キー「Ctrl」+「1」を押して、[セルの書式設定]ダイアログ ボックスを表示します。
- [塗りつぶし]タブの[その他の色]ボタンをクリックします。
- [色の設定]ダイアログ ボックスの[ユーザー設定]タブに、[赤][緑][青]の設定値を確認することができます。
あと、色といえばテーマの色がありますね。
テーマの色は、テーマを変更すると違う配色となりますので、絶対的な色ではありません。
ちなみに、テーマが既定のOfficeのときに、「青、アクセント 1、黒 + 基本色 50%」の色を指定する場合、マクロ記録すると次の記述が得られます。
With Selection.Interior
.ThemeColor = xlThemeColorAccent1
.TintAndShade = -0.499984740745262
End With
ThemeColorプロパティとTintAndShadeプロパティにより、テーマの色の選んだ位置が特定されるようになっています。