VBAでセルの背景色や文字色を設定する方法は主に3つあります。ColorIndex(インデックス番号)・Color(RGB)・Color(Hex)です。それぞれ指定できる色の幅と書き方が異なります。
この記事では3つの方法の違いと使い分けを解説します。
ColorIndexで色を設定するには?
ColorIndex は色にあらかじめ割り当てられたインデックス番号で指定します。1行でシンプルに書けますが、使える色は56色に限られます。
' セルA1の背景色を赤(インデックス番号3)に設定
Cells(1, 1).Interior.ColorIndex = 3
' 文字色を青(インデックス番号5)に設定
Cells(1, 1).Font.ColorIndex = 5
よく使うインデックス番号は次のとおりです。
| 番号 | 色 |
|---|---|
| 1 | 黒 |
| 2 | 白 |
| 3 | 赤 |
| 4 | 黄緑 |
| 5 | 青 |
| 6 | 黄 |
色をクリアしたい場合は ColorIndex = xlNone と指定します。
RGBで色を自由に指定するには?
RGB(赤・緑・青)の各値を0〜255で指定する方法です。約167万色を表現でき、細かい色指定に最適です。
' 赤
Cells(1, 1).Interior.Color = RGB(255, 0, 0)
' 空色
Cells(1, 1).Interior.Color = RGB(173, 216, 230)
' 文字色をオレンジに
Cells(1, 1).Font.Color = RGB(237, 125, 49)
Excelのセルの書式設定で希望の色を選び、ダイアログ内のRGB値を確認すると、そのままコードに使えます。

Hexで色を指定するには?
16進数での指定方法です。VBAでは &H で始め、BGR(青・緑・赤)の順で記述します(通常のHexとは順序が逆なので注意)。
' 赤(#FF0000 → VBAではBGR順で &H0000FF)
Cells(1, 1).Interior.Color = &H0000FF
' 白(#FFFFFF)
Cells(1, 1).Interior.Color = &HFFFFFF
Hexはウェブデザインなどで慣れている場合に使う方法ですが、RGBと比べてわかりにくいため、初心者には RGB() の方をおすすめします。
まとめ
ColorIndex:インデックス番号で56色から指定。シンプルだが色の幅が限られるRGB(赤, 緑, 青):0〜255の値で約167万色を指定できる。最もおすすめ&HBBGGRR:16進数で指定するHex方式。VBAはBGR順のため通常のHexとは逆- Excelの「色の設定」ダイアログのRGB値をそのままコードに使うのが最も簡単な色の調べ方
- 色をリセットする場合は
ColorIndex = xlNoneを使う
よくある質問
背景色と文字色の設定はどう違いますか?
背景色は Interior.Color(または Interior.ColorIndex)、文字色は Font.Color(または Font.ColorIndex)で設定します。プロパティを替えるだけで同じRGBやColorIndexが使えます。
色を元の状態(デフォルト)に戻すにはどうすればいいですか?
背景色のリセットは Interior.ColorIndex = xlNone、文字色のリセットは Font.ColorIndex = xlAutomatic を使います。
Excel上で選んだ色のRGB値を調べるにはどうすればいいですか?
セルを選択して「ホーム」→「塗りつぶしの色」の▼→「その他の色」→「ユーザー設定」タブを開くと、現在の色のR・G・Bの値が表示されます。この値をそのままコードに使えます。
条件によってセルの色を変えることはできますか?
できます。If〜Then や Select Case と組み合わせることで、セルの値や条件に応じて動的に色を設定できます。たとえば「値が100以上なら赤、50以上なら黄、それ以外は白」といった処理が可能です。
マクロの記録で生成された色設定のコードは長くなりますが、省略できますか?
できます。マクロの記録では Pattern・TintAndShade など多くのプロパティが自動生成されますが、色の設定だけが目的なら Interior.Color = RGB(255, 0, 0) の1行だけで同じ結果が得られます。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



