VBAで文字色・セルの背景色を変更する方法|Font.ColorとInterior.Colorの使い分け

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が初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール