VBAでセルを塗りつぶしなしにするなら、まずは次の1行です。
Range("A1").Interior.ColorIndex = xlNone公式表記に寄せるなら xlColorIndexNone です。どちらも「色なし」を表す値として使えます。Interior はセルの内側を表す入口、.Color はRGBで色を付ける・取得するプロパティ、.ColorIndex は色番号や塗りつぶしなしを扱うプロパティです。初心者のうちは、この3つを分けて見てください。
Excelで「セルの色を消したい」「背景色をクリアしたい」「色付きセルだけ数えたい」と思って検索すると、Interior.Color、ColorIndex、xlNone、RGB が一気に出てきます。
この記事では、最初に塗りつぶしなしのコードを出します。そのあとで、色を付ける、色を取得する、色名を判定する、特定の色を数える、点数によって色分けするところまでまとめます。
このページだけで、背景色を消すところから、色を付ける・取得する・実務で使うところまで確認できるように整理しています。
| 項目 | 目安 |
|---|---|
| よく使う度 | |
| 難しさ | |
| 実務重要度 |
最初は、今やりたい操作から選んでください。リンク先で何が分かるかも一緒に確認できます。
| 今やりたいこと | 見る場所 |
|---|---|
| セルを今すぐ塗りつぶしなしにしたい | VBAでセルの塗りつぶしをなしにする方法 |
Interior.Colorでセルに色を付けたい | Interior.Colorでセルの色を変更・取得する方法 |
| セルの色を取得してRGBや色名を調べたい | Interior.ColorでRGB値と色名を取得する |
ColorIndexの色番号や塗りつぶしなしの番号を確認したい | ColorIndexで色番号を指定する方法と一覧 |
| 条件付き書式の色が取れなくて困っている | Interior.Colorを使う実務例と注意点 |
この記事では、Microsoft Learnの公式情報だけでなく、Excelで実際にセルへ色を付けてから、ColorIndex = xlNone、xlColorIndexNone、xlPatternNone、RGB(255,128,64) の戻り値を確認しています。
| 確認した内容 | 確認結果 | 記事での使い方 |
|---|---|---|
| 塗りつぶしなしに戻すコード | ColorIndex = -4142、Pattern = -4142 になることを確認 | 最初に出す基本コードの根拠 |
.Color と .ColorIndex の役割 | 色を付ける・取得する処理と、色なしに戻す処理を分けて確認 | 初心者が迷いやすい使い分けの整理 |
RGB(255,128,64) の値 | 今回の環境では 4227327 | 現行記事の数値を検証値に合わせて修正 |
VBAでセルの塗りつぶしをなしにする方法
急いでいる場合は、この章だけで大丈夫です。1セル、範囲、行、列、シート全体で背景色をクリアするコードを先にまとめます。
1セル・範囲・行列・シート全体をクリアする
1セルだけ塗りつぶしなしにするコード
Sub RemoveCellColor()
Range("A1").Interior.ColorIndex = xlNone
End SubRange("A1") が対象セルです。A1以外を消したいときは、ここを Range("B2") のように変えます。
スクショでは、実行後にセルの背景色だけが消えているところを見てください。値や罫線まで消したい場合は別のメソッドを使うため、ここでは「色だけを戻す」処理として分けています。

範囲をまとめて塗りつぶしなしにするコード
Sub RemoveRangeColor()
Range("A1:E2").Interior.ColorIndex = xlNone
End Sub行をまとめて塗りつぶしなしにするコード
Sub RemoveRowColor()
Rows("1:5").Interior.ColorIndex = xlNone
End Sub列をまとめて塗りつぶしなしにするコード
Sub RemoveColumnColor()
Columns("A:E").Interior.ColorIndex = xlNone
End Subアクティブシート全体の塗りつぶしをクリアするコード
Sub RemoveAllCellColors()
Cells.Interior.ColorIndex = xlNone
End Subここでの Cells は、今操作しているシートの全セルです。ブック内の全シートではありません。特定のシートを確実に処理したい場合は、次のようにシート名まで指定します。
Sub RemoveSheetCellColors()
Worksheets("Sheet1").Cells.Interior.ColorIndex = xlNone
End Sub
xlNoneとxlColorIndexNoneの違い
Microsoft LearnのInterior.ColorIndex プロパティでは、色はカラー パレットのインデックス、または xlColorIndexAutomatic / xlColorIndexNone で表すと説明されています。
つまり、公式ドキュメントの表記に寄せるなら次の書き方です。
Sub RemoveCellColorOfficialName()
Range("A1").Interior.ColorIndex = xlColorIndexNone
End Subただ、VBAのサンプルでは xlNone もよく使われます。この検証環境では、赤く塗ったセルに ColorIndex = xlColorIndexNone を設定しても、ColorIndex = xlNone 相当の値を設定しても、どちらも ColorIndex = -4142、Pattern = -4142 になり、見た目は塗りつぶしなしに戻りました。
| 書き方 | 使いどころ | メモ |
|---|---|---|
ColorIndex = xlNone | 短く書きたいとき | 多くのVBA例で見かける |
ColorIndex = xlColorIndexNone | 公式名に寄せたいとき | Microsoft LearnのXlColorIndex 列挙では「色なし」と説明されている |
Pattern = xlPatternNone | パターンも含めてなしにしたいとき | XlPattern 列挙では「パターンなし」 |
この記事では、検索している人が見つけやすいように本文では xlNone を中心にし、根拠説明では xlColorIndexNone も併記します。
白く塗るのと塗りつぶしなしの違い
見た目だけなら、白で塗ったセルと塗りつぶしなしのセルは似ています。ただし、VBAで見ると意味が違います。
| 状態 | 見た目 | ColorIndexの考え方 |
|---|---|---|
| 白で塗る | 白い塗りつぶしがある | 色が設定されている |
| 塗りつぶしなし | セル本来の背景 | 色なし |
実務では、あとから「色が付いているセルだけ数える」「色が付いていないセルだけ処理する」といった判定をすることがあります。その場合、白く塗るより、必要なセルだけ ColorIndex = xlNone で本当に塗りつぶしなしへ戻す方が扱いやすいです。
検証では、未設定セルと ColorIndex = xlColorIndexNone で戻したセルは、どちらも ColorIndex = -4142 になりました。一方、赤や黄色で塗ったセルは Pattern = 1 となり、塗りつぶしが設定されている状態でした。
Interior.Colorでセルの色を変更・取得する方法
ここでは、Interior.Color だけに絞って説明します。Interior.Color は、RGB値でセルの色を付ける、またはセルの色を取得するときに使います。ColorIndex は次の章で別に扱います。
Microsoft LearnのRange.Interior プロパティでは、Rangeからセル内部を表すInteriorオブジェクトを返すと説明されています。Range("A1").Interior.Color のように、セルの内側に対して .Color を指定する流れです。

| 書き方 | 何を指すか | 役割 |
|---|---|---|
Range("A1").Interior | セルの内側・背景部分 | 色を操作する入口 |
.Color | RGBの色値 | 色を付ける、色を取得する |
Interior.Colorでセルに色を付ける
RGBで赤く塗る
Sub SetCellColorByRgb()
Range("A1").Interior.Color = RGB(255, 0, 0)
End SubInterior.Color は、セルの塗りつぶし色を取得・設定するプロパティです。Microsoft LearnのInterior.Color プロパティでも、RGB関数を使って色値を作る説明があります。
主要なRGBカラー & VBA定数一覧
色を選ぶときは、数字だけを見るより、色見本とコードを並べた方が分かりやすいです。まずは次の基本色を覚えておくと、実務の色分けコードを書きやすくなります。
| 色見本 | 色 | RGB指定 | VBA定数 | 使いどころ |
|---|---|---|---|---|
| 赤 | RGB(255, 0, 0) | vbRed | エラー、要確認、期限超過 | |
| 緑 | RGB(0, 255, 0) | vbGreen | 完了、正常、合格 | |
| 青 | RGB(0, 0, 255) | vbBlue | 入力欄、参照用、分類 | |
| 黄色 | RGB(255, 255, 0) | vbYellow | 注意、未入力、確認待ち | |
| 水色 | RGB(0, 255, 255) | vbCyan | 補足、作業中、メモ | |
| 紫 | RGB(255, 0, 255) | vbMagenta | 例外、特殊処理、目立たせたい箇所 | |
| 灰色 | RGB(128, 128, 128) | なし | 対象外、無効、処理しない行 | |
| 白 | RGB(255, 255, 255) | vbWhite | 白で塗る。塗りつぶしなしとは別 |
Interior.ColorでRGB値と色名を取得する
セルの背景色を取得する場合も、Interior.Color を変数に入れます。戻り値はLong型の数値です。
Sub GetCellColor()
Dim cellColor As Long
Dim R As Long, G As Long, B As Long
' A1セルの背景色を取得
cellColor = Range("A1").Interior.Color
' RGB値に分解
R = cellColor Mod 256
G = (cellColor \ 256) Mod 256
B = (cellColor \ 65536) Mod 256
MsgBox "A1セルの背景色:" & vbCrLf & _
"RGB(" & R & ", " & G & ", " & B & ")"
End SubMicrosoft LearnのRGB 関数では、赤・緑・青の各値は0から255の範囲で指定すると説明されています。RGB(255, 128, 64) を例にすると、Long値は次の計算になります。
(64 * 65536) + (128 * 256) + 255 = 4227327この値は、今回のExcel検証でも Interior.Color = 4227327 として確認しました。

色名まで出したい場合は、RGB値を判定する関数を分けると読みやすくなります。赤かどうかの判定も、取得した colorName を使って同じSubの中で行います。
Sub GetCellColorName()
Dim cellColor As Long
Dim R As Long, G As Long, B As Long
Dim colorName As String
cellColor = Range("A1").Interior.Color
R = cellColor Mod 256
G = (cellColor \ 256) Mod 256
B = (cellColor \ 65536) Mod 256
colorName = GetColorName(R, G, B)
If colorName = "赤" Then
MsgBox "A1セルは赤です。" & vbCrLf & _
"RGB(" & R & ", " & G & ", " & B & ")"
Else
MsgBox "A1セルは赤ではありません。" & vbCrLf & _
"色名:" & colorName & vbCrLf & _
"RGB(" & R & ", " & G & ", " & B & ")"
End If
End Sub
Function GetColorName(ByVal R As Long, ByVal G As Long, ByVal B As Long) As String
Select Case True
Case R = 255 And G = 0 And B = 0
GetColorName = "赤"
Case R = 0 And G = 255 And B = 0
GetColorName = "緑"
Case R = 0 And G = 0 And B = 255
GetColorName = "青"
Case R = 255 And G = 255 And B = 0
GetColorName = "黄色"
Case R = 0 And G = 255 And B = 255
GetColorName = "シアン(水色)"
Case R = 255 And G = 0 And B = 255
GetColorName = "マゼンタ(紫)"
Case R = 0 And G = 0 And B = 0
GetColorName = "黒"
Case R = 255 And G = 255 And B = 255
GetColorName = "白"
Case Else
GetColorName = "不明な色"
End Select
End FunctionIf colorName = "赤" Then は単独で実行するコードではなく、colorName = GetColorName(R, G, B) の後に続けて書く判定部分です。上の完成版のように、1つのSubの中へ入れて使ってください。

Interior.Colorを使う実務例と注意点
値に応じてセル色を変える
点数やステータスに応じて色を変える場合は、Select Case を使うと読みやすくなります。
Sub ChangeCellColorByValue()
Dim rng As Range
Dim cell As Range
Set rng = Range("A1:A10")
For Each cell In rng
If IsNumeric(cell.Value) Then
Select Case CDbl(cell.Value)
Case Is >= 80
cell.Interior.Color = RGB(0, 255, 0) ' 80以上は緑
Case Is >= 50
cell.Interior.Color = RGB(255, 255, 0) ' 50以上80未満は黄色
Case Else
cell.Interior.Color = RGB(255, 0, 0) ' 50未満は赤
End Select
End If
Next cell
End Subこの例では、色を付ける処理を Interior.Color だけで書いています。空白セルや文字列セルの色を消したい場合は、前章の塗りつぶしなしコードを別処理として使う、と分けて考えると混乱しにくいです。

色付きセルをカウントする
赤く塗ったセルだけ数えたい場合は、対象範囲を1セルずつ見て、Interior.Color が目的の色と一致するか確認します。
Sub CountColoredCells()
Dim rng As Range
Dim cell As Range
Dim targetColor As Long
Dim count As Long
Set rng = Range("A1:A10")
targetColor = RGB(255, 0, 0)
count = 0
For Each cell In rng
If cell.Interior.Color = targetColor Then
count = count + 1
End If
Next cell
MsgBox "指定された色(赤色)のセル数:" & count
End Sub
条件付き書式で赤く見えているセルを Interior.Color で取得すると、「見た目の赤」ではなく、セルに直接設定されている元の塗りつぶし色が返ることがあります。
Microsoft LearnのRange.DisplayFormat プロパティでは、DisplayFormat は条件付き書式の影響を受けた表示設定を返すと説明されています。条件付き書式で表示されている色を確認したい場合は、DisplayFormat.Interior.Color を使います。
Sub GetDisplayedColor()
Dim displayColor As Long
displayColor = Range("A1").DisplayFormat.Interior.Color
MsgBox displayColor
End Subただし、同じ公式ページでは、DisplayFormat はワークシート上のユーザー定義関数では使えない制限も説明されています。セルに =関数名() と入れて色を返す作りには向きません。VBAのSubプロシージャから確認する用途で考えると安全です。
セルの色変更だけでなく、Range・For Each・条件分岐まで理解したい方は、VBA講座も確認しておくと迷いにくいです
この記事のコードだけでも、塗りつぶしなし、色の変更、色の取得は試せます。ただ、Range、Cells、For Each、If、Select Case をまとめて身につけたい場合は、動画講座で実際の操作画面を見ながら学ぶと理解しやすくなります。
※価格・割引・返金条件・講座内容は変わる場合があります。購入前にUdemy上で最新情報をご確認ください。
ColorIndexで色番号を指定する方法と一覧
ここからは ColorIndex だけを扱います。ColorIndex はExcelのカラー パレット上の番号で色を指定する方法です。既存コードに ColorIndex = 6 のような書き方がある場合や、塗りつぶしなしの -4142 を確認したい場合に使います。
ColorIndexで色番号から指定する

ColorIndexで黄色にするコード
Sub SetCellColorByColorIndex()
Range("A1").Interior.ColorIndex = 6
End SubColorIndex は、色を番号で指定します。短く書けますが、番号だけだと何色か分かりにくいため、新しく書くコードでは Interior.Color = RGB(...) の方が読みやすい場面も多いです。
ColorIndex一覧と塗りつぶしなしの番号
| 色見本 | 色 | RGB指定 | VBA定数 | ColorIndexの目安 |
|---|---|---|---|---|
| 赤 | RGB(255, 0, 0) | vbRed | 3 | |
| 緑 | RGB(0, 255, 0) | vbGreen | 4 | |
| 青 | RGB(0, 0, 255) | vbBlue | 5 | |
| 黄色 | RGB(255, 255, 0) | vbYellow | 6 | |
| 黒 | RGB(0, 0, 0) | vbBlack | 1 | |
| 灰色 | RGB(128, 128, 128) | なし | 16 | |
| 白 | RGB(255, 255, 255) | vbWhite | 2 | |
| 水色 | RGB(0, 255, 255) | vbCyan | 8 | |
| 紫 | RGB(255, 0, 255) | vbMagenta | 7 | |
| 塗りつぶしなし | なし | xlNone / xlColorIndexNone | -4142 |
Interior.ColorとColorIndexを混ぜない使い分け
初心者のうちは、次のように役割で分けてください。色を付ける・取得する説明を読むときは Interior.Color、色なしに戻す・古い番号指定を読むときは ColorIndex です。
| 方法 | 向いている場面 | 注意点 |
|---|---|---|
Interior.Color = RGB(...) | 色を分かりやすく指定したい | RGBの3つの数字を管理する |
Interior.Color を取得 | セルの背景色をRGB値や色名で判定したい | 戻り値はLong型の数値 |
Interior.ColorIndex = 6 | ColorIndex番号で管理している既存コードを直す | 番号だけだと色が分かりにくい |
Interior.ColorIndex = xlNone | 塗りつぶしなしに戻す | 色を付ける用途ではなくクリア用途で使う |
FAQとまとめ
最後に、検索でよく出てくる疑問をまとめます。
ブック内の全シートをまとめてクリアするコード例
Sub RemoveAllSheetsCellColors()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Cells.Interior.ColorIndex = xlNone
Next ws
End Sub次に読む記事
RangeとCellsの違いを整理したい場合: VBAのRangeとCellsの違いと使い分け方- メッセージ表示を詳しく知りたい場合: VBAのMsgBoxの使い方
- 色付きセルを順番に処理する考え方: VBAのFor Each Inの使い方
- 条件分岐の基本: VBAのIf Thenの使い方
- 値に応じて処理を分ける: VBAのSelect Caseの使い方
- VBA記事を一覧で探す: サイトマップ
セルの色分けで進捗管理をしていて、表が見づらくなっていませんか?
VBAでセルの色を変えられるようになると、進捗表やタスク表を色分けして管理しやすくなります。ただ、案件数や担当者が増えると、色だけでは「いつまでに何をするか」が追いにくくなります。締切や工程を横軸で見たい場合は、ローカルで動くガントチャートアプリ Schedika に分けると、色分け表とスケジュール管理を切り離して整理できます。
- 外部送信なし
- Excelへ提出しやすい
- ブラウザで起動
※Schedikaは筆者が作成した自社製品です。無料Lite版とStandard版の違い、動作環境、価格はリンク先で確認できます。
まとめ
- VBAでセルを塗りつぶしなしにするなら、まず
Range("A1").Interior.ColorIndex = xlNone。 - 公式表記に寄せるなら
xlColorIndexNone。どちらも色なしの説明と合わせて使う。 - 色を付ける・取得するなら
Interior.Color = RGB(...)が分かりやすい。 ColorIndexは色番号や塗りつぶしなしを扱うときに便利。- 条件付き書式の見た目の色は、
Interior.ColorではなくDisplayFormat.Interior.Colorを検討する。 - 色だけで業務判定せず、できれば値やステータス列を持たせてから色を付けると実務で壊れにくい。

