Interior は「セルの“背景色”などを操るためのオブジェクト」
まずイメージから。
Font が「文字の見た目」を扱うのに対して、
Interior は「セルの中の塗りつぶし(背景色など)」を扱うオブジェクトです。
セルの色を黄色にしたい
条件に合う行だけ背景色を変えたい
入力エリアだけ薄い色を付けたい
こういう「セルの塗りつぶし」をコードでコントロールしたいとき、必ず通るのが Interior です。
Range → 場所
Value → 中身
Font → 文字の見た目
Interior → セルの背景の見た目
この役割分担を頭に置いておくと、整理しやすくなります。
一番基本:Interior.Color で背景色を変える
A1 の背景色を黄色にする
Sub SampleInteriorBasic()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("入力")
ws.Range("A1").Value = "重要"
ws.Range("A1").Interior.Color = vbYellow
End Sub
VBここでやっていることは、
A1 に「重要」と書く
その A1 の Interior(背景)の Color を vbYellow にする
という流れです。
重要なのは、
Range(“A1”) が「場所」
その .Interior が「背景の設定」
その .Color が「何色にするか」
という階層になっていることです。
RGB で細かい色を指定する
ws.Range("A1").Interior.Color = RGB(255, 200, 0) ' 少しオレンジ寄りの黄色
VBRGB(赤, 緑, 青) で、0~255 の値を組み合わせて色を指定できます。
「会社指定の色に近づけたい」といったときに便利です。
複数セル・行・列にまとめて色を付ける
見出し行全体を色付けする
Sub SampleInteriorHeader()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("入力")
With ws.Range("A1:D1").Interior
.Color = vbYellow
End With
End Sub
VBA1:D1 の範囲を選び、その Interior.Color を設定しています。
この書き方で、「見出し行だけ背景色を付ける」といったことが簡単にできます。
条件に合う行だけ背景色を変える
Sub SampleInteriorConditional()
Dim ws As Worksheet
Dim lastRow As Long
Dim r As Long
Set ws = ThisWorkbook.Worksheets("入力")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' A列の最終行
For r = 2 To lastRow
If ws.Cells(r, 3).Value < 0 Then ' C列がマイナスなら
ws.Rows(r).Interior.Color = RGB(255, 200, 200) ' 行全体を薄い赤に
End If
Next r
End Sub
VBここでは、
A 列の最終行までループ
各行の C 列の値をチェック
マイナスなら、その行全体の Interior.Color を変える
という流れです。
「条件に合う行だけ色を付ける」という、実務でよくあるパターンを Interior で表現しています。
Interior をリセットする(色を元に戻す)
背景色を「塗りつぶしなし」に戻す
ws.Range("A1:D10").Interior.ColorIndex = xlNone
VBColorIndex に xlNone を指定すると、「塗りつぶしなし」の状態になります。
「一度付けた色を消したい」「条件付きで付けた色をリセットしたい」ときに使います。
もう一つのやり方として、書式ごと消す方法もあります。
ws.Range("A1:D10").ClearFormats
VBこれは Interior だけでなく、フォントや罫線などの書式も全部消えるので、
「見た目を全部リセットしたい」場合に使います。
Interior を使うときに意識してほしい重要ポイント
「Range → Interior → Color」という階層を体に染み込ませる
Interior も Font と同じで、単体では存在できません。
必ず「どの Range の Interior か」とセットです。
ws.Range("A1").Interior.Color = vbYellow
ws.Cells(3, 2).Interior.Color = RGB(200, 255, 200)
ws.Rows(5).Interior.Color = vbCyan
ws.Columns("C").Interior.Color = vbYellow
VB全部、
Range(場所)
その Interior(背景)
その Color(色)
という階層になっています。
この構造を意識して書けるようになると、
「今、自分はセルのどの部分をいじっているのか」が迷子になりません。
「どのシートの、どの範囲の Interior か」を毎回はっきり書く
避けたい書き方の例です。
Range("A1").Interior.Color = vbYellow
VBこれは「アクティブなシートの A1」を前提にしているので、
シートが変わると意図しない場所に色を付けてしまうリスクがあります。
超初心者のうちから、あえてこう書く癖をつけてください。
ThisWorkbook.Worksheets("入力").Range("A1").Interior.Color = vbYellow
VBあるいは変数を使って:
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("入力")
ws.Range("A1").Interior.Color = vbYellow
VB「どのブック → どのシート → どの範囲 → その Interior → 何色にするか」
という順番を崩さない書き方は、将来の自分をかなり助けてくれます。
まとめ:Interior は「セルの背景色で情報を“視覚的に伝える”ためのハンドル」
Interior の本質は、
「Range に対して、その背景(塗りつぶし)の色などを制御するためのオブジェクト」
です。
押さえておきたいポイントをコンパクトにまとめると、
Interior は「セルの背景」、Font は「文字の見た目」Range(...).Interior.Color = vbYellow や RGB(...) で色を指定できる
単一セル・複数セル・行・列など、どの範囲にも同じように使える
「どのシートのどの範囲の Interior か」を毎回はっきり書くことで、意図しない色付けを防げる
