【2026年7月最新】VBA ColorIndex完全ガイド|56色の色見本一覧・Font/Interior/Tab設定とClaude Code活用術
この記事の内容
ExcelのVBAでセルや文字の色を変えようとしたとき、「ColorIndexって何?」「番号で何色になるの?」と迷ったことはありませんか。この記事にたどり着いたあなたは、おそらくそのような状況にいるはずです。
VBAのColorIndexプロパティは、Excelが内部で持つ56色の固定パレットから色を番号で指定する仕組みです。「3番 = 赤」「5番 = 青」のように番号と色が対応しているため、覚えてしまえば非常にシンプルに使えます。しかし、「どの番号がどの色なのか」「RGBとどう違うのか」「Font・Interior・Tabごとにどう書くのか」といった疑問が一度に押し寄せてきて、混乱するのも無理はありません。
この記事では、VBA ColorIndexの基本概念から、56色の完全な色見本一覧、実践コード集まで、体系的かつ網羅的に解説します。さらに後半では、Claude Codeを使ってVBAコードを自動生成する方法まで紹介します。「VBAを書くたびに色番号を調べるのが面倒」という方も、この記事一本でその悩みを解消できます。
この記事を読むとわかること:
01 BASIC CONCEPT ColorIndexプロパティとは何か:基本の仕組みを理解する Excelの56色固定パレットと番号対応の設計思想
VBAのColorIndexプロパティは、Excelが内部に持つ56色の固定カラーパレットから色を番号(インデックス番号)で指定するためのプロパティです。Excelの旧バージョン(Excel 97〜2003時代)から引き継がれている仕組みで、現在のExcel 2016・2019・Microsoft 365でも完全に動作します。
📚 用語解説
ColorIndex(カラーインデックス):ExcelがRGBではなく、1〜56の整数番号でパレット上の色を参照する仕組み。Font(文字)・Interior(セル背景)・Borders(罫線)・Tab(シート見出し)など各オブジェクトのColorIndexプロパティに番号を代入することで、色を設定できる。
ColorIndexを理解するうえで最も重要な概念は「56色のパレット」です。Excelの標準カラーパレットには56色が定義されており、各色に1〜56の番号(インデックス)が振られています。ColorIndexプロパティにこの番号を設定することで、対応する色が適用されます。
たとえば、ColorIndex = 3 は「赤」、ColorIndex = 5 は「青」を意味します。プログラムから見ると「3」という数字で赤色を指定できるため、可読性の高いコードを書きやすいという利点があります。一方、RGB値(0〜255の三原色)で色を直接指定する「Colorプロパティ」と比べると、表現できる色数は56色に限定されるというトレードオフがあります。
📚 用語解説
xlColorIndexAutomatic:VBAで色を「自動」に戻すための定数。Font.ColorIndex = xlColorIndexAutomatic と書くと、Excelのデフォルトの文字色(通常は黒)に戻る。数値としては -4105 に相当する。
📚 用語解説
xlColorIndexNone:VBAで色を「なし(透明)」に設定するための定数。Interior.ColorIndex = xlColorIndexNone と書くと、セル背景を「塗りつぶしなし」に戻す。数値としては -4142 に相当する。
ColorIndexには、通常の1〜56の番号に加えて、2つの特別な定数が存在します。
| 定数 | 数値 | 意味 | 主な用途 |
|---|---|---|---|
| xlColorIndexAutomatic | -4105 | 自動(デフォルト色) | Font.ColorIndex に使用(黒に戻す) |
| xlColorIndexNone | -4142 | なし(透明・塗りつぶしなし) | Interior.ColorIndex に使用(背景色クリア) |
ColorIndexの使用例を先に把握しておきましょう。基本的な書き方は以下の通りです。
' セルA1の文字色を赤(ColorIndex=3)に設定
Range("A1").Font.ColorIndex = 3
' セルA1の背景色を黄色(ColorIndex=6)に設定
Range("A1").Interior.ColorIndex = 6
' シート1の見出しの色を青(ColorIndex=5)に設定
Worksheets("Sheet1").Tab.ColorIndex = 5
' セルA1の文字色を自動(デフォルト)に戻す
Range("A1").Font.ColorIndex = xlColorIndexAutomatic
' セルA1の背景色をなし(透明)に戻す
Range("A1").Interior.ColorIndex = xlColorIndexNone
56色一覧から
使いたい色の
番号を調べる
Font/Interior
/Tab/Borders
から選ぶ
.ColorIndex =
番号を代入する
Excelで色が
変わっているか
確認する
02 COLOR PALETTE 56色パレット完全一覧(番号・色名・RGB・16進数) ブックマーク必須の永久保存版カラーリファレンス
以下は、ExcelのVBAで使用できる56色のColorIndex完全一覧です。番号・日本語色名・英語色名・RGB値・16進数コードを一覧にしました。VBAコードを書く際の参照用に、ブックマークしておくことをお勧めします。
ColorIndex 1〜16は標準色として固定されており、どのExcelバージョンでも同じ色になります。17〜56は「テーマカラー」の影響を受ける場合があり、テーマ変更後に見た目が変わることがあります。コードの安定性を重視するなら、1〜16の標準色を中心に使うのが推奨です。
| 番号 | 色名(日本語) | 色名(英語) | R | G | B | 16進数 |
|---|---|---|---|---|---|---|
| 1 | 黒 | Black | 0 | 0 | 0 | #000000 |
| 2 | 白 | White | 255 | 255 | 255 | #FFFFFF |
| 3 | 赤 | Red | 255 | 0 | 0 | #FF0000 |
| 4 | 明るい緑 | Bright Green | 0 | 255 | 0 | #00FF00 |
| 5 | 青 | Blue | 0 | 0 | 255 | #0000FF |
| 6 | 黄 | Yellow | 255 | 255 | 0 | #FFFF00 |
| 7 | ピンク | Pink | 255 | 0 | 255 | #FF00FF |
| 8 | シアン | Turquoise | 0 | 255 | 255 | #00FFFF |
| 9 | 暗い赤 | Dark Red | 128 | 0 | 0 | #800000 |
| 10 | 緑 | Green | 0 | 128 | 0 | #008000 |
| 11 | 濃い青 | Dark Blue | 0 | 0 | 128 | #000080 |
| 12 | オリーブ | Dark Yellow | 128 | 128 | 0 | #808000 |
| 13 | 紫 | Violet | 128 | 0 | 128 | #800080 |
| 14 | ティール | Teal | 0 | 128 | 128 | #008080 |
| 15 | 明るいグレー | Gray-25% | 192 | 192 | 192 | #C0C0C0 |
| 16 | グレー | Gray-50% | 128 | 128 | 128 | #808080 |
| 17 | ペリウィンクル | Periwinkle | 153 | 153 | 255 | #9999FF |
| 18 | プラム | Plum | 153 | 51 | 102 | #993366 |
| 19 | アイボリー | Ivory | 255 | 255 | 204 | #FFFFCC |
| 20 | 明るいシアン | Light Turquoise | 204 | 255 | 255 | #CCFFFF |
| 21 | 濃い紫 | Dark Purple | 102 | 0 | 102 | #660066 |
| 22 | サーモン | Coral | 255 | 128 | 128 | #FF8080 |
| 23 | オーシャンブルー | Ocean Blue | 0 | 102 | 204 | #0066CC |
| 24 | ラベンダー | Lavender | 204 | 204 | 255 | #CCCCFF |
| 25 | 小麦色 | Tan | 255 | 204 | 153 | #FFCC99 |
| 26 | 薄いオレンジ | Light Orange | 255 | 153 | 0 | #FF9900 |
| 27 | コーンフラワー | Cornflower Blue | 51 | 102 | 255 | #3366FF |
| 28 | アクアマリン | Aquamarine | 51 | 204 | 204 | #33CCCC |
| 29 | ライムグリーン | Lime Green | 0 | 204 | 102 | #00CC66 |
| 30 | ゴールド | Gold | 255 | 204 | 0 | #FFCC00 |
| 31 | オレンジ(薄) | Light Orange 2 | 255 | 153 | 0 | #FF9900 |
| 32 | オレンジ(濃) | Orange | 255 | 102 | 0 | #FF6600 |
| 33 | ブルーグレー | Blue-Gray | 102 | 102 | 153 | #666699 |
| 34 | グレー(40%) | Gray-40% | 150 | 150 | 150 | #969696 |
| 35 | 濃いティール | Dark Teal | 0 | 51 | 102 | #003366 |
| 36 | シーグリーン | Sea Green | 51 | 153 | 102 | #339966 |
| 37 | 濃い緑 | Dark Green 2 | 0 | 51 | 0 | #003300 |
| 38 | 濃いオリーブ | Dark Olive | 51 | 51 | 0 | #333300 |
| 39 | 茶 | Brown | 153 | 51 | 0 | #993300 |
| 40 | 明るいオレンジ | Light Orange 3 | 255 | 153 | 0 | #FF9900 |
| 41 | アイスブルー | Ice Blue | 0 | 204 | 255 | #00CCFF |
| 42 | スカイブルー | Sky Blue | 51 | 204 | 255 | #33CCFF |
| 43 | 明るい黄緑 | Light Green | 153 | 204 | 0 | #99CC00 |
| 44 | 黄(明) | Yellow 2 | 255 | 204 | 0 | #FFCC00 |
| 45 | タン | Tan 2 | 255 | 153 | 0 | #FF9900 |
| 46 | ローズ | Rose | 255 | 0 | 102 | #FF0066 |
| 47 | 明るい青 | Bright Blue | 0 | 102 | 255 | #0066FF |
| 48 | 明るい黄 | Light Yellow | 255 | 255 | 102 | #FFFF66 |
| 49 | 明るいシアン2 | Light Cyan | 102 | 255 | 255 | #66FFFF |
| 50 | 明るい緑2 | Light Green 2 | 102 | 255 | 153 | #66FF99 |
| 51 | 薄い黄 | Pale Yellow | 255 | 255 | 153 | #FFFF99 |
| 52 | 水色 | Light Blue | 0 | 153 | 255 | #0099FF |
| 53 | バイオレット2 | Violet 2 | 153 | 0 | 255 | #9900FF |
| 54 | 明るい赤 | Hot Pink | 255 | 0 | 153 | #FF0099 |
| 55 | 黄緑 | Yellow-Green | 153 | 255 | 0 | #99FF00 |
| 56 | 白(グレー) | White Gray | 255 | 255 | 255 | #FFFFFF |
03 FONT COLOR Fontで文字色を設定・取得する セル・範囲・フォントオブジェクトへのColorIndex適用方法
VBAでセル内の文字色(フォントカラー)を変更するには、Font.ColorIndexプロパティを使います。Font オブジェクトはセルやセル範囲に対して存在し、ColorIndex に色番号を設定することで文字の色が変わります。
📚 用語解説
Font オブジェクト:Excelのセルに含まれる文字のフォント設定を管理するオブジェクト。ColorIndex(色)・Size(サイズ)・Bold(太字)・Italic(斜体)・Name(フォント名)などのプロパティを持つ。Range("A1").Font で参照できる。
3-1. 文字色を設定する基本コード
セルA1の文字色を赤に変えるには、以下のように書きます。
Sub SetFontColor()
' セルA1の文字色を赤(ColorIndex=3)に設定
Range("A1").Font.ColorIndex = 3
' 複数セルに一括で文字色を設定する
Range("A1:C10").Font.ColorIndex = 3
' アクティブセルの文字色を青(ColorIndex=5)に設定
ActiveCell.Font.ColorIndex = 5
' 選択範囲すべての文字色を変更する
Selection.Font.ColorIndex = 9 ' 暗い赤
End Sub
ColorIndex = 3 で赤、ColorIndex = 5 で青、ColorIndex = 6 で黄色が設定されます。上の56色一覧表と照らし合わせながら、任意の番号を指定してください。
3-2. 文字色のColorIndex番号を取得する
すでに色が設定されているセルから、ColorIndex番号を取得して変数に格納したいケースもあります。設定と逆の操作で、プロパティの値を読み出すだけです。
Sub GetFontColorIndex()
Dim idx As Long
' セルA1の文字色インデックスを取得
idx = Range("A1").Font.ColorIndex
' メッセージボックスに表示
MsgBox "セルA1の文字色インデックス: " & idx
' 取得したインデックスを別の処理に使う
If idx = 3 Then
MsgBox "赤色が設定されています"
ElseIf idx = xlColorIndexAutomatic Then
MsgBox "自動色(デフォルト)が設定されています"
End If
End Sub
3-3. 文字色を自動(デフォルト)に戻す
一度設定した文字色を元の自動色(通常は黒)に戻したいときは、xlColorIndexAutomaticを使います。0や""を代入しても色はリセットされないため、必ずこの定数を使うことが重要です。
Sub ResetFontColor()
' セルA1の文字色を自動(デフォルト)に戻す
Range("A1").Font.ColorIndex = xlColorIndexAutomatic
' シート全体の文字色をリセット
Cells.Font.ColorIndex = xlColorIndexAutomatic
End Sub
複数セルに条件付きで色を付けたい場合は、For Each ~ Next でセルをループしながら ColorIndex を条件分岐で変える方法が便利です。たとえば「値が100以上なら赤、50〜99なら黄、49以下なら緑」という信号機カラーコーディングも、If文とColorIndexの組み合わせで数行で実装できます。詳細は第7章で実践コードを紹介します。
04 INTERIOR COLOR Interiorでセルの背景色を設定・取得する セル塗りつぶしの設定・取得・クリアを完全マスター
セルの背景色(塗りつぶし)を設定するには、Interior.ColorIndexプロパティを使います。Fontが文字の色を管理するのに対し、Interiorはセルの背景部分の色を管理します。このプロパティはVBA業務マクロで最も頻繁に使われる色設定のひとつです。
📚 用語解説
Interior オブジェクト:Excelのセルの「内側(背景部分)」のフォーマットを管理するオブジェクト。ColorIndex(塗りつぶし色)・Pattern(模様)・PatternColor(模様の色)などのプロパティを持つ。セルの背景色設定はすべてこのオブジェクトを通じて行う。
4-1. 背景色を設定する基本コード
Sub SetInteriorColor()
' セルA1の背景色を黄(ColorIndex=6)に設定
Range("A1").Interior.ColorIndex = 6
' 範囲B2:D10の背景色を明るい緑(ColorIndex=4)に設定
Range("B2:D10").Interior.ColorIndex = 4
' 現在のセルを水色(ColorIndex=41)に設定
ActiveCell.Interior.ColorIndex = 41
' 選択範囲の背景色を薄いオレンジ(ColorIndex=40)に設定
Selection.Interior.ColorIndex = 40
End Sub
4-2. 背景色のColorIndex番号を取得する
Sub GetInteriorColorIndex()
Dim idx As Long
' セルA1の背景色インデックスを取得
idx = Range("A1").Interior.ColorIndex
' 値の確認
If idx = xlColorIndexNone Then
MsgBox "背景色なし(塗りつぶしなし)です"
Else
MsgBox "背景色インデックス: " & idx
End If
End Sub
4-3. 背景色を「なし」(透明)に戻す
セルの背景色をクリアして「塗りつぶしなし」に戻すには、xlColorIndexNoneを使います。
Sub ClearInteriorColor()
' セルA1の背景色をクリア(塗りつぶしなし)
Range("A1").Interior.ColorIndex = xlColorIndexNone
' シート全体の背景色をクリア
Cells.Interior.ColorIndex = xlColorIndexNone
' 別の方法(ColorPatternをnlPatternNoneに設定)
Range("A1").Interior.Pattern = xlNone
End Sub
ColorIndexに0を代入すると「塗りつぶしなし」にはならず、パレットの先頭に対応する黒色が設定されてしまうことがあります。背景色を透明に戻したい場合は必ず xlColorIndexNone を使うのが正しい方法です。この誤りは初学者がよく踏む罠ですので注意してください。
Range("A1").Interior.ColorIndex = 番号idx = Range("A1").Interior.ColorIndexRange("A1").Interior.ColorIndex = xlColorIndexNoneCells.Interior.ColorIndex = xlColorIndexNoneIf Range("A1").Interior.ColorIndex = xlColorIndexNone Then05 TAB COLOR Tabでシート見出しの色を設定・取得する シート見出し(タブ)の色を変えるVBAコード
Excelのシート見出し(タブ)の色をVBAで変更するには、Worksheets("Sheet名").Tab.ColorIndexを使います。見出しの色を業務の状況に合わせて色分けしておくと、大量シートを管理する際の視認性が大幅に向上します。
📚 用語解説
Tab オブジェクト:Excelのワークシートのシート見出し(タブ)を管理するオブジェクト。WorksheetオブジェクトのTabプロパティでアクセスできる。ColorIndexプロパティを持ち、シート見出しの色を設定・取得できる。
5-1. シート見出しの色を設定する
Sub SetTabColor()
' Sheet1の見出しを赤(ColorIndex=3)に設定
Worksheets("Sheet1").Tab.ColorIndex = 3
' アクティブシートの見出しを青(ColorIndex=5)に設定
ActiveSheet.Tab.ColorIndex = 5
' 複数シートを一括で色設定する
Dim ws As Worksheet
Dim idx As Integer
idx = 3 ' 最初の色(赤から開始)
For Each ws In Worksheets
ws.Tab.ColorIndex = idx
idx = idx + 1
If idx > 8 Then idx = 3 ' 3〜8でサイクル
Next ws
End Sub
5-2. シート見出しの色を取得する
Sub GetTabColorIndex()
Dim idx As Long
' Sheet1の見出し色インデックスを取得
idx = Worksheets("Sheet1").Tab.ColorIndex
MsgBox "Sheet1のタブ色インデックス: " & idx
End Sub
5-3. シート見出しの色を自動に戻す
Sub ResetTabColor()
' Sheet1の見出し色を自動に戻す
Worksheets("Sheet1").Tab.ColorIndex = xlColorIndexAutomatic
' すべてのシートのタブ色をリセット
Dim ws As Worksheet
For Each ws In Worksheets
ws.Tab.ColorIndex = xlColorIndexAutomatic
Next ws
End Sub
たとえば、シートの完成状況に応じてタブ色を自動変更するマクロを作れます。「未着手=灰色(ColorIndex=15)」「作業中=黄(ColorIndex=6)」「完了=緑(ColorIndex=10)」のように、特定のセルの値を読んでタブ色を動的に切り替えるとスプレッドシートの運用が格段に効率化します。
06 COLORINDEX vs RGB ColorIndex vs Color(RGB直接指定)の違いと使い分け 2つの色指定方法を比較し、最適な選択基準を整理する
VBAで色を指定する方法は主に2つあります。ColorIndex(パレット番号)とColor(RGB値)です。どちらを使うかは、用途と求める精度によって異なります。この章では両者の違いを正確に理解し、適切に使い分けられるようになることを目標とします。
| 比較項目 | ColorIndex | Color(RGB) |
|---|---|---|
| 色の指定方法 | 1〜56の番号 | RGB(R,G,B)または16進数 |
| 選べる色数 | 56色固定 | 約1,677万色(制限なし) |
| コードの読みやすさ | 番号で覚えれば直感的 | RGB値は一見してわかりにくい |
| テーマによる変化 | 17〜56は変わる可能性あり | 常に指定した通りの色 |
| 処理速度 | 若干速い(番号参照) | やや遅い(RGB変換処理あり) |
| 用途 | 定型報告書・簡易マクロ | 厳密な色指定・ブランドカラー |
📚 用語解説
Color プロパティ(RGB指定):RGBの三原色(Red・Green・Blue)それぞれを0〜255で指定して色を設定するプロパティ。たとえば RGB(255, 0, 0) は赤、RGB(0, 128, 0) は緑。ColorIndexが56色に限定されるのに対し、Colorプロパティは約1,677万色(2^24色)を表現できる。
6-1. ColorとColorIndexの書き方の比較
' ===== ColorIndexを使う場合 =====
' 赤(パレット番号3)
Range("A1").Font.ColorIndex = 3
Range("A1").Interior.ColorIndex = 3
' ===== Colorプロパティ(RGB直接指定)を使う場合 =====
' 赤(RGB値で指定)
Range("A1").Font.Color = RGB(255, 0, 0)
Range("A1").Interior.Color = RGB(255, 0, 0)
' ===== 16進数で指定する場合(VBAの&H表記)=====
' 赤(16進数: BBGGRR の逆順に注意!)
Range("A1").Font.Color = &H0000FF ' ←VBAの16進数はBGR逆順!
' ===== ColorIndexとColorの変換 =====
' ColorIndex番号から対応するRGB値を取得する
Dim palette_color As Long
palette_color = ActiveWorkbook.Colors(3) ' パレット番号3の実際のRGB値を取得
Dim r As Long, g As Long, b As Long
r = palette_color Mod 256
g = (palette_color \ 256) Mod 256
b = (palette_color \ 65536) Mod 256
MsgBox "R=" & r & " G=" & g & " B=" & b
HTMLやCSSでは #RRGGBB の順番で色を指定しますが、VBAの &H 表記ではなぜか BBGGRR(青・緑・赤の逆順)になります。たとえば赤(RGB: 255,0,0)をVBAで16進数指定する場合は &H0000FF(青緑成分が0、赤成分がFF)となります。HTMLと同じ感覚で書くと色が全く違うものになるため、注意が必要です。
6-2. どちらを選ぶべきか
実務的な判断基準としては次のように考えると迷いがなくなります。
07 PRACTICAL CODE 実践!業務で使えるVBAカラーコード集 条件付き色付け・一括リセット・色調査マクロの完全サンプル
ここまでの知識を活かして、実際の業務で即使えるVBAカラーコードを紹介します。コピー&ペーストして使えるレベルのサンプルをそろえましたので、ご自身の業務に合わせてカスタマイズしてください。
7-1. 信号機カラーで数値を自動色付けするマクロ
売上・点数・評価など、数値の大小によって自動的に色分けするマクロです。条件を変えることでさまざまな業務に応用できます。
Sub TrafficLightColoring()
' A列のデータをチェックして信号機カラーで色付けする
' 100以上=緑(10) / 50〜99=黄(6) / 49以下=赤(3)
Dim ws As Worksheet
Dim cell As Range
Dim lastRow As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For Each cell In ws.Range("A2:A" & lastRow)
If IsNumeric(cell.Value) Then
Select Case cell.Value
Case Is >= 100
cell.Interior.ColorIndex = 10 ' 緑
cell.Font.ColorIndex = xlColorIndexAutomatic
Case 50 To 99
cell.Interior.ColorIndex = 6 ' 黄
cell.Font.ColorIndex = 1 ' 黒(可読性確保)
Case Else
cell.Interior.ColorIndex = 3 ' 赤
cell.Font.ColorIndex = 2 ' 白(可読性確保)
End Select
End If
Next cell
MsgBox "色付け完了!(対象行数: " & lastRow - 1 & "行)"
End Sub
7-2. 指定範囲の背景色を一括リセットするマクロ
マクロで色付けした範囲を、まとめてクリアするユーティリティです。再度色付け処理を走らせる前のリセット処理として活用できます。
Sub ResetAllColors()
' アクティブシート全体の色をリセット
Dim answer As Integer
answer = MsgBox("このシートのすべての色設定をリセットしますか?", _
vbYesNo + vbQuestion, "色のリセット確認")
If answer = vbYes Then
' 背景色をクリア
Cells.Interior.ColorIndex = xlColorIndexNone
' 文字色を自動に戻す
Cells.Font.ColorIndex = xlColorIndexAutomatic
MsgBox "リセット完了!"
End If
End Sub
7-3. シート上の色付きセルを一覧表示するマクロ
どのセルにどの色が付いているか、一覧表に書き出して把握できるようにするマクロです。誰かが手動で色付けしたシートの確認や、引き継ぎ資料の作成に便利です。
Sub ListColoredCells()
' 色付きセルを新しいシートに一覧表示する
Dim srcWs As Worksheet
Dim rptWs As Worksheet
Dim cell As Range
Dim usedRange As Range
Dim row As Long
Set srcWs = ActiveSheet
' 出力先シートを準備(既存なら削除して再作成)
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("色付きセル一覧").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Set rptWs = Worksheets.Add
rptWs.Name = "色付きセル一覧"
' ヘッダー
rptWs.Range("A1").Value = "セルアドレス"
rptWs.Range("B1").Value = "背景色Index"
rptWs.Range("C1").Value = "文字色Index"
rptWs.Range("D1").Value = "セルの値"
rptWs.Range("A1:D1").Font.Bold = True
row = 2
Set usedRange = srcWs.UsedRange
For Each cell In usedRange
Dim bgIdx As Long
Dim fontIdx As Long
bgIdx = cell.Interior.ColorIndex
fontIdx = cell.Font.ColorIndex
' 背景色または文字色が設定されているセルだけ記録
If bgIdx <> xlColorIndexNone Or fontIdx <> xlColorIndexAutomatic Then
rptWs.Cells(row, 1).Value = cell.Address
rptWs.Cells(row, 2).Value = bgIdx
rptWs.Cells(row, 3).Value = fontIdx
rptWs.Cells(row, 4).Value = cell.Value
' 実際の背景色を一覧にも反映
If bgIdx <> xlColorIndexNone Then
rptWs.Cells(row, 1).Interior.ColorIndex = bgIdx
End If
row = row + 1
End If
Next cell
If row = 2 Then
MsgBox "色付きセルは見つかりませんでした。"
Else
MsgBox "色付きセル一覧を作成しました。(" & row - 2 & "件)"
End If
End Sub
対象シートを
アクティブにして
マクロ起動
UsedRangeを
For Eachで
ループ
背景色・文字色の
ColorIndexを
新シートに出力
どのセルに
どの色があるか
一目でわかる
08 AI AUTOMATION Claude CodeでVBAコードを自動生成する方法 「VBAを書く」作業をAIに委ねてExcel業務を加速する
ここまでVBAのColorIndexについて詳しく解説してきましたが、正直なところ、VBAコードをゼロから手書きするのは時間がかかる作業です。色番号を調べて、コードの書き方を確認して、テストして修正して……というサイクルを毎回繰り返すのは非効率です。
この問題を解決するのが、Claude Code(AI活用)によるVBAコードの自動生成です。Anthropicが提供するClaude Codeは、日本語で業務要件を伝えるだけで、完動するVBAコードを数秒で生成してくれます。色の設定・条件付き書式・一括処理といった今まで時間がかかっていた作業も、プロンプト1つで完結します。
📚 用語解説
Claude Code:Anthropicが提供するAIコーディングエージェント。ターミナル(コマンドライン)上で動作し、自然言語の指示でコードの生成・編集・デバッグを自律的に行う。VBA・Python・JavaScript等の言語に対応しており、「VBAで〇〇する処理を書いて」と日本語で指示するだけでコードを出力してくれる。
8-1. Claude CodeでVBAを生成する具体的なプロンプト例
以下は、実際にClaude Codeに投げるプロンプトの例です。このような日本語の指示文を入力するだけで、完全なVBAコードが得られます。
| やりたいこと | プロンプト例(Claude Codeへの指示) |
|---|---|
| 数値に信号機カラーを付けたい | 「ExcelのVBAで、A列に数字が入っている場合、100以上は緑(ColorIndex=10)、50〜99は黄(ColorIndex=6)、49以下は赤(ColorIndex=3)で自動色付けするマクロを書いて」 |
| シートタブを自動色分けしたい | 「VBAで、シートのB1セルに「完了」と入力されている場合はタブを緑に、「作業中」なら黄に、それ以外は灰色に自動変更するマクロを書いて」 |
| 色付きセルを一覧化したい | 「Excelシート上で背景色が設定されているセルをすべて見つけて、新しいシートにアドレス・ColorIndex・セルの値を一覧化するVBAマクロを書いて」 |
| 背景色を一括クリアしたい | 「VBAで選択範囲内のすべてのセルの背景色(Interior.ColorIndex)を「なし」に戻すマクロを書いて。確認ダイアログも付けて」 |
8-2. Claude CodeでVBAコードを使うフロー
「何を・どの条件で
・どう色付けするか」
を言語化する
整理した要件を
自然な日本語で
入力する
完動するVBAコードが
数秒で生成される
(修正指示も可能)
VBEエディタに
コピー&ペーストして
マクロを実行
動作確認後に
微調整が必要なら
Claude Codeに依頼
エラーが出たときも、エラーメッセージとコードをそのままClaude Codeに貼り付けて「このエラーを直して」と伝えるだけで修正案を提示してくれます。「実行時エラー1004」「型が一致しません」などのVBAの典型的なエラーはもちろん、ロジックのバグにも対応できます。
09 CONCLUSION まとめ:VBA ColorIndexをマスターしてExcel業務を効率化する 本記事のポイントと次のアクション
この記事では、VBAのColorIndexプロパティについて、基本概念から56色の完全一覧、Font・Interior・Tab別の設定・取得コード、ColorIndexとRGBの違い、実践マクロ集、そしてClaude Codeを使ったAI自動生成まで網羅的に解説しました。
VBAやExcel業務のAI活用を、AI鬼管理が一緒に設計します
ColorIndexの使い方を覚えたら、次は「このVBAコードを自動生成・保守する仕組みごと作る」という段階に進めます。
弊社では、Claude Codeを活用したExcel・業務マクロの自動化設計から伴走まで支援しています。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. ColorIndex = 0 を設定すると何が起きますか?
A. ColorIndex = 0 を設定した場合の動作はExcelのバージョンによって異なりますが、多くの環境では「塗りつぶしなし」ではなく意図しない色(黒など)が適用されることがあります。背景色をクリアして「なし(透明)」にしたいときは、必ず xlColorIndexNone(値: -4142)を使ってください。xlColorIndexNone を使うことでパレット外の「なし」状態が正確に指定できます。
Q. ColorIndexとColorプロパティは同時に使えますか?
A. 同一オブジェクトのColorIndexとColorプロパティを同時に設定した場合、後から設定した方が優先されます。たとえば Interior.ColorIndex = 3 を設定した後に Interior.Color = RGB(0, 128, 0) を設定すると、最終的には緑のRGB色になります。同じプロパティを2つの方法で設定することは混乱の原因になるため、どちらかに統一することを推奨します。
Q. ColorIndex = 56 の色は何色ですか?
A. Excelの標準パレットではColorIndex = 56は「白に近い明るいグレー」に対応していますが、正確な色はワークブックのカラーパレット設定によって変わる場合があります。確実な色を指定したい場合は、本記事の56色一覧表を参照のうえ使用するか、カラーパレットを固定する ActiveWorkbook.Colors(56) の値を事前に確認することをお勧めします。
Q. 条件付き書式の色とVBAのColorIndexは干渉しますか?
A. はい、干渉します。ExcelではVBAのColorIndex設定よりも「条件付き書式」が優先的に表示されます。つまり、VBAでColorIndexを設定しても、セルに条件付き書式が適用されている場合は条件付き書式の色が上書き表示されます。VBAで色を確実に反映させたい場合は、先に対象セルの条件付き書式を削除(xlCellTypeAllFormatConditions)するか、条件付き書式を使わない設計にする必要があります。
Q. セルの色をVBAで確認する際、-4142や-4105が返ってくるのはなぜですか?
A. -4142(xlColorIndexNone)は「塗りつぶしなし(背景が透明)」、-4105(xlColorIndexAutomatic)は「自動色(デフォルト文字色)」を意味する定数です。Interior.ColorIndexで-4142が返った場合は「セルに背景色が設定されていない」、Font.ColorIndexで-4105が返った場合は「文字色が自動(通常は黒)のまま」という意味です。これらの値は通常の1〜56の番号とは別の「特別な状態」を表します。
Q. ColorIndex 17〜56のRGB値はどこで確認できますか?
A. Excelのカラーパレット上のColorIndex 17〜56の正確なRGB値は、VBAで ActiveWorkbook.Colors(番号) を実行することで取得できます。返り値は長整数型のRGB値なので、R = 返り値 Mod 256、G = (返り値 \ 256) Mod 256、B = (返り値 \ 65536) Mod 256 で各成分を分離できます。本記事の一覧表はExcel標準パレットの代表的な値を掲載していますが、テーマや設定によって変わる可能性があるため、重要なプロジェクトでは必ずVBAで実測することを推奨します。
Q. Claude CodeでVBAコードを生成するとき、無料で使えますか?
A. Claude CodeはAnthropicのClaudeのプランに含まれており、Proプラン(月額$20・約3,000円)以上で追加料金なしで利用できます。Freeプランでも限定的に使用できますが、本格的に業務VBAコードを生成・修正し続けるならProプランが必要です。VBAコードの自動生成という使途であれば、月$20の投資で数十〜数百時間のVBA手書き作業を節約できるため、コスパの観点でも導入は十分メリットがあります。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




