ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

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の値を調べるには、次の手順が便利です。

  1. 任意のセルに色を付けて、そのセルを選択します。
  2. ショートカット キー「Ctrl」+「1」を押して、[セルの書式設定]ダイアログ ボックスを表示します。
  3. [塗りつぶし]タブの[その他の色]ボタンをクリックします。
  4. [色の設定]ダイアログ ボックスの[ユーザー設定]タブに、[赤][緑][青]の設定値を確認することができます。
色の設定ダイアログ ボックスユーザー設定

あと、色といえばテーマの色がありますね。
テーマの色は、テーマを変更すると違う配色となりますので、絶対的な色ではありません。
ちなみに、テーマが既定のOfficeのときに、「青、アクセント 1、黒 + 基本色 50%」の色を指定する場合、マクロ記録すると次の記述が得られます。

  With Selection.Interior
    .ThemeColor = xlThemeColorAccent1
    .TintAndShade = -0.499984740745262
  End With

ThemeColorプロパティとTintAndShadeプロパティにより、テーマの色の選んだ位置が特定されるようになっています。

関連ヘルプ

セル、セル範囲を参照する 《Range・Cells・Rows・Columns》
フォントの書式を設定する 《Font》
VBAで出てくる基礎用語について教えて
VBAでワークシート関数を使用する 《Value・Formula・FormulaR1C1》
ワークシート関数の答えをセルに出さないで取得する 《WorksheetFunction》
twitter hatena line pocket