VBAで文字の色やセルの背景色を変更するには、Font.Color(文字色)と Interior.Color(背景色)を使います。FontをInteriorに変えるだけで切り替えられるので、片方を覚えればもう片方もすぐに使えます。
この記事では、次の内容を順番に解説します。
- 文字の色を変更する方法(Font.Color)
- セルの背景色を変更する方法(Interior.Color)
- 色をクリア(リセット)する方法
- 条件に応じてセルの色を変える実践コード
文字の色を変更するには?
文字の色を変えるには、「どのセルの」「文字(Font)の」「色(Color)」という順番で指定します。
' セルA2の文字を赤にする
Cells(2, 1).Font.Color = RGB(255, 0, 0)
同じ「赤」でも、3つの書き方があります。
' 方法1:ColorIndex(番号で指定・56色のみ)
Cells(2, 1).Font.ColorIndex = 3
' 方法2:RGB(赤・緑・青の数値で指定・約1677万色)
Cells(2, 1).Font.Color = RGB(255, 0, 0)
' 方法3:Hex(16進数で指定・BGR順なので注意)
Cells(2, 1).Font.Color = &H0000FF
初心者の方には RGB がおすすめです。Excelの「その他の色」で確認した値をそのまま使えて、約1677万色から自由に選べます。ColorIndexは56色しか対応していないため、細かい調整には向きません。
セルの背景色を変更するには?
文字色の Font の部分を Interior に変えるだけで、セルの背景色を設定できます。
' セルA2の背景を黄色にする
Cells(2, 1).Interior.Color = RGB(255, 255, 0)
文字色と背景色の違いは、FontかInteriorかだけです。
' 文字の色を赤にする
Cells(2, 1).Font.Color = RGB(255, 0, 0)
' セルの背景色を赤にする
Cells(2, 1).Interior.Color = RGB(255, 0, 0)
範囲をまとめて変更することもできます。
' A1:C10の背景を薄い青にする
Range("A1:C10").Interior.Color = RGB(200, 220, 255)
色をクリア(リセット)するには?
設定した色を元に戻すには、xlNone を使います。ColorIndexでもColorでも、xlNone を代入すれば色を消すことができます。
' 文字色をクリア(自動=黒に戻る)
Cells(2, 1).Font.ColorIndex = xlNone
' 背景色をクリア(塗りつぶしなしに戻る)
Cells(2, 1).Interior.ColorIndex = xlNone
範囲全体の色をまとめてクリアすることもできます。
' A1:C10の背景色をすべてクリアする
Range("A1:C10").Interior.ColorIndex = xlNone
条件に応じてセルの色を変えるには?
実務では「条件に合ったセルだけ色を変えたい」場面が多くあります。Ifと組み合わせて使います。
Sub 条件で色を変える()
Dim i As Long
For i = 1 To 20
If Cells(i, 1).Value >= 100 Then
Cells(i, 1).Interior.Color = RGB(255, 255, 0)
End If
Next i
End Sub
文字色と背景色を同時に変えたい場合は、With を使うとコードがすっきりします。
Sub 文字色と背景色を同時に変更する()
With Cells(2, 1)
.Font.Color = RGB(255, 255, 255) ' 文字を白に
.Interior.Color = RGB(0, 100, 200) ' 背景を青に
End With
End Sub
With を使うと、同じセルに対する複数の操作をまとめて書けます。
まとめ
- 文字色を変える:
Cells(1,1).Font.Color = RGB(255,0,0) - 背景色を変える:
Cells(1,1).Interior.Color = RGB(255,0,0) - 色をクリアする:
Cells(1,1).Interior.ColorIndex = xlNone - 色の指定方法:初心者にはRGBがおすすめ(約1677万色対応)。
- FontかInteriorかの違いだけなので、片方を覚えればもう片方もすぐに使える。
よくある質問
ColorIndexとRGBはどちらを使うべき?
RGBがおすすめです。ColorIndexは56色しか対応していないため、細かい色の調整ができません。古いコードではColorIndexが使われていることがありますが、新しく書くならRGBを使いましょう。
Hex(16進数)で指定するときの注意点は?
VBAのHex指定は BGR順(青・緑・赤)です。WebのCSS等で使われるRGB順とは逆なので注意してください。たとえば赤は、CSSでは #FF0000 ですが、VBAでは &H0000FF と書きます。
条件付き書式とVBAの色変更はどう使い分ける?
データが変わるたびに自動で色が変わってほしい場合は条件付き書式、マクロ実行時に一括で色を変えたい場合はVBAが向いています。大量のルールを設定する場合はVBAで条件付き書式を設定する方法もあります。
VBAで色を変えたのに反映されない場合は?
セルに条件付き書式が設定されていないか確認してください。
条件付き書式はVBAでの色変更より優先されるため、VBAで背景色を変えても上書きされることがあります。Cells(1,1).FormatConditions.Delete で条件付き書式を解除してからお試しください。
Font.ColorとFont.ColorIndexの違いは?
Font.Color はRGBやHexで色を指定する際に使い、Font.ColorIndex は番号(1〜56)で指定する際に使います。色をクリアするときは、どちらに対しても xlNone が使えます。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



