VBA セルに色を設定する (Interior.Color, ColorIndex)

はじめに

Excel VBA マクロでセルに色を設定する方法を紹介します。

Range("B1").Font.Color または Cells(1, 2).Font.Color プロパティから、セル「B1」の文字色を付けられます。

Interior.Color プロパティから、セルの背景色を付けられます。

色を取得するには「セルの色を取得する」をご覧ください。
セルを範囲指定するすべての方法は「セルを範囲指定して取得する」をご覧ください。
  • 目次
    • セルに色を設定する
    • セルの範囲に色を設定する
    • 別シートのセルに色を設定する

セルに色を設定する

セルの文字色と背景色を設定できます

罫線の色を設定するには「セルに罫線の色を設定する」をご覧ください。

色は「RGB 関数」で取得した値を設定します。

Range の引数にセル名を指定すると、そのセルに色を付けられます。

セル「A1」に色を付けるには Range("A1").Font.ColorRange("A1").Interior.Color を入力します。

Range("A1").Font.Color = RGB(255, 0, 0) ' 文字色
Range("A1").Interior.Color = RGB(200, 200, 200) ' 背景色
2

Cells の引数にセルの行と列の番号を指定すると、そのセルに色を付けられます。

行「2」、列「A」に色を付けるには Cells(2, 1).Font.ColorRange("A1").Interior.Color を入力します。

Cells(1, 1).Font.Color = RGB(255, 0, 0) ' A1
Cells(2, 1).Font.Color = RGB(255, 0, 0) ' A2
Cells(1, 2).Interior.Color = RGB(255, 0, 0) ' B1
Cells(2, 2).Interior.Color = RGB(255, 0, 0) ' B2

ColorIndex プロパティからも色を設定できます。それぞれの色に対応した数値を設定します。

Range("A1").Font.ColorIndex = 3      ' 赤
Range("A1").Interior.ColorIndex = 0  ' 塗りつぶしなし
Range("A1").Interior.ColorIndex = 35 ' 黄緑
colorindex

セルの範囲に色を設定する

セルの範囲「A1」~「B2」に同じ色を設定するには Range("A1:B2").Font.Color または Range("A1", "B2").Font.Color を入力します。

Range("A1:B2").Font.Color = RGB(255, 0, 0) ' 文字色
Range("A1", "B2").Interior.Color = RGB(200, 200, 200) ' 背景色
3

別シートのセルに色を設定する

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

sheet1
' Sheet1 のセル「A1」に文字色を設定
Worksheets("Sheet1").Range("A1").Font.Color = RGB(255, 0, 0)
Worksheets(1).Range("A1").Font.Color = RGB(255, 0, 0)

' Sheet2 のセル「A1」に背景色を設定
Worksheets("Sheet2").Range("A1").Interior.Color = RGB(200, 200, 200)
Worksheets(2).Range("A1").Interior.Color = RGB(200, 200, 200)

Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表す Me. が省略されています。

' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"

標準モジュールに Range や Cells を入力すると、開いているシートのセルになります。アクティブシートを表す ActiveSheet. が省略されています。

' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"