Excel VBAでは、セルの背景色(塗りつぶし色)をプログラムで簡単に変更できます。
業務で表を自動生成したり、条件によってセルの色を変える処理を作る際に欠かせないテクニックです。
しかし、「ColorIndex」と「Color」の違いが分からない、「どの色番号がどんな色になるのか知りたい」といった疑問を持つ方も多いでしょう。
この記事では、Excel VBAでセルの塗りつぶし色を変更する方法を、色番号の一覧とともにわかりやすく解説します。
初心者でもすぐ使える実用的なサンプルコードも紹介しますので、業務効率化にぜひ役立ててください。
Excel VBAでセルを塗りつぶす基本構文
まず、セルの塗りつぶし(背景色)を設定する最も基本的な方法を紹介します。
Excel VBAでは、Interior.ColorIndex または Interior.Color プロパティを使用して色を指定します。
● 基本構文
Range("A1").Interior.ColorIndex = 3
このコードは、セルA1を赤色で塗りつぶします。ColorIndexはExcelの**パレット色(56色)**を番号で指定する方法です。
一方、RGB値を使って自由に色を指定する場合は、次のように書きます。
Range("A1").Interior.Color = RGB(255, 0, 0)
こちらも同じく赤色になります。RGB(赤, 緑, 青) の数値で色を指定できるため、より細かな色指定が可能です。
ColorIndexとColorの違い
Excel VBAで色を扱う際には、次の2種類の指定方法があります。
| プロパティ名 | 指定方法 | 特徴 |
|---|---|---|
ColorIndex | Excel標準の56色から番号で指定 | 簡単で軽い処理 |
Color | RGB値で自由に指定可能 | 自由度が高い |
たとえば、以下のような違いがあります。
' ColorIndex(固定の56色)
Range("A1").Interior.ColorIndex = 6 ' 黄色
' Color(RGBで指定)
Range("A2").Interior.Color = RGB(255, 255, 0) ' 黄色(同じ見た目)
ColorIndexは環境によって色が異なることがある点に注意してください。
一方、RGB指定のColorは環境に依存せず、正確な色を再現できます。
ColorIndexの色番号一覧
以下は、Excel VBAで使える代表的なColorIndex番号と対応する色の一覧です。
(環境により若干異なる場合があります)
| ColorIndex | 色名 | 説明 |
|---|---|---|
| 1 | 黒 | Black |
| 2 | 白 | White |
| 3 | 赤 | Red |
| 4 | 緑 | Green |
| 5 | 青 | Blue |
| 6 | 黄 | Yellow |
| 7 | ピンク | Pink |
| 8 | 水色 | Cyan |
| 9 | 茶色 | Brown |
| 10 | 紫 | Purple |
| 11 | 紺 | Dark Blue |
| 12 | 橙 | Orange |
| 13 | 灰色 | Gray |
| 14 | 明るい緑 | Light Green |
| 15 | 明るい青 | Light Blue |
| 16 | 金色 | Gold |
| 17 | 銀色 | Silver |
| 18 | 濃い赤 | Dark Red |
| 19 | 濃い緑 | Dark Green |
| 20 | 濃い青 | Dark Blue |
実際には56色まで存在しますが、上記の範囲を覚えておくと日常業務では十分対応できます。
自分で色見本を作るマクロも次で紹介します。
全ColorIndex色を確認するマクロ
どの番号がどんな色になるか、実際にExcel上で確認したい場合は、次のマクロを使うと便利です。
Sub ShowColorIndexList()
Dim i As Integer
Dim r As Range
Range("A1").Value = "ColorIndex"
Range("B1").Value = "Color"
For i = 1 To 56
Set r = Range("A" & i + 1)
r.Value = i
r.Offset(0, 1).Interior.ColorIndex = i
Next i
End Sub
このマクロを実行すると、A列に1〜56の番号が表示され、B列に対応する色が塗られます。
実際のカラーパレットを一目で確認できるため、とても便利です。
条件によって塗りつぶしを変える方法
次に、セルの値に応じて色を自動で変える方法を紹介します。
たとえば、点数が80点以上なら緑、60点未満なら赤に塗るといった処理です。
Sub ColorByScore()
Dim c As Range
For Each c In Range("B2:B10")
If c.Value >= 80 Then
c.Interior.Color = RGB(0, 255, 0) ' 緑
ElseIf c.Value < 60 Then
c.Interior.Color = RGB(255, 0, 0) ' 赤
Else
c.Interior.Color = RGB(255, 255, 0) ' 黄色
End If
Next c
End Sub
このように条件に応じて自動で色を変えれば、表の視認性が一気に向上します。
特にテスト結果や在庫の状態管理などで活用されています。
塗りつぶしを解除する方法
塗りつぶした色をリセット(元に戻す)には、以下のように書きます。
Range("A1").Interior.ColorIndex = xlNone
または、白に戻す場合は次のようにします。
Range("A1").Interior.Color = RGB(255, 255, 255)
xlNoneは「色なし」という意味で、背景が透明に戻ります。
行全体をまとめて塗りつぶす方法
特定の条件を満たす行全体を塗りつぶすことも可能です。
たとえば、「売上が100万円以上なら行を緑にする」場合は次のように書けます。
Sub ColorFullRow()
Dim i As Long
For i = 2 To 20
If Cells(i, 3).Value >= 1000000 Then
Rows(i).Interior.Color = RGB(144, 238, 144)
End If
Next i
End Sub
このように、Rows(i).Interior.Colorを使えば行全体を一括で変更できます。
セルの塗りつぶしを他の条件付き書式と併用する場合
VBAで色を塗る場合、条件付き書式(Conditional Formatting)とは独立して動作します。
つまり、VBAで指定した色は条件付き書式の色より優先される場合があります。
もし条件付き書式を残したい場合は、VBAで色を上書きせず、条件書式だけで表現する方法を検討するとよいでしょう。
あるいは、一時的にVBAで強調表示をして、処理後にxlNoneで戻す方法も有効です。
応用:カラーパレットを利用した自動レポート作成
VBAで色を使うと、次のような応用ができます。
- 点数に応じて評価表を自動で色分け
- 在庫数の多寡に応じてセルを赤・黄・緑で表示
- スケジュール表で進捗ステータスを色で表現
- 売上推移をグラデーションで可視化
たとえば、グラデーション表示を簡単に行うコード例がこちらです。
Sub GradientExample()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Interior.Color = RGB(255, 255 - (i * 20), 0)
Next i
End Sub
行が下に行くほど色が赤から黄色に変化するグラデーションになります。
このように、色の工夫で見やすく・分かりやすい資料が自動で作れます。
まとめ
Excel VBAでの塗りつぶし色指定は、データを見やすく整理する上で非常に便利な機能です。
ポイントをおさらいしましょう。
ColorIndex:Excel標準の色番号(56色)で指定できるColor:RGB値を使って自由な色を指定できるInterior.ColorIndexまたはInterior.Colorプロパティでセルを塗るxlNoneで塗りつぶし解除ができる- 条件によって色分けすればデータ可視化にも使える
業務で「自動で色をつける」処理を作ると、視覚的に情報を把握しやすくなり、ミスの防止にも役立ちます。
色を使いこなせば、あなたのExcelマクロはより実用的でわかりやすいツールになるでしょう。


コメント