
Excel VBA セルや範囲の背景色を変更し、視認性を向上させたり、条件付きフォーマットのようにデータの状態を色で示したりする。使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
Excel VBA セルを条件付きで背景色を変更|シーン
以下のシーンで利用します。
1.強調したいデータ(例:期限切れ、異常値など)のハイライト
2.入力ミスのチェック結果を色で通知
3.条件に応じたセルの色分け(例:売上が一定以上なら緑、それ以下なら赤)
セルの背景色は ColorIndex または RGB を使って指定できます。
Excel VBA セルを条件付きで背景色を変更|サンプルコード
ColorIndexを使う方法(色番号指定)
Range("A1").Interior.ColorIndex = 3 ' A1セルを赤にする
・Copy でコピーした後、PasteSpecial Paste:=xlPasteValues で値のみ貼り付け
・Application.CutCopyMode = False でクリップボードをクリア
Value プロパティを使ったシンプルな方法
Option Explicit
Sub CopyValues_Direct()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' コピー元シート
ws.Range("D1:D10").Value = ws.Range("A1:A10").Value ' 値のみコピー
End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
RGBを使う方法(より細かい色指定)
Range("A1").Interior.Color = RGB(255, 0, 0) ' A1セルを赤にする
RGB(赤, 緑, 青) の値を 0~255 で指定
Range("A1").Interior.Color = RGB(0, 255, 0) ' 緑
Range("A1").Interior.Color = RGB(0, 0, 255) ' 青
Range("A1").Interior.Color = RGB(255, 255, 0) ' 黄色
・ColorIndex = -4142(または xlNone)で色をクリアできる
・ColorIndex は 56 色しかないが、RGB を使えば 1677万色 指定可能
・ColorIndex = xlAutomatic でデフォルト色に戻せる
指定範囲のセルを赤にする
Option Explicit
Sub 塗りつぶし_ColorIndex()
Range("A1:C3").Interior.ColorIndex = 3 ' A1~C3を赤にする
End Sub
セルの値に応じて色を変更
Option Explicit
Sub 条件付き塗りつぶし()
Dim rng As Range
For Each rng In Range("A1:A10") ' A1:A10の各セルをチェック
If rng.Value >= 100 Then
rng.Interior.Color = RGB(0, 255, 0) ' 100以上なら緑
Else
rng.Interior.Color = RGB(255, 0, 0) ' 100未満なら赤
End If
Next rng
End Sub
フォームのボタンをクリックして塗りつぶし(フォームモジュール)
Option Explicit
Sub btnFill_Click()
Sheet1.Range("B2:D4").Interior.ColorIndex = 6 ' 黄色にする
End Sub
ユーザーフォームで選択した色に塗りつぶす(フォームモジュール)
Option Explicit
Private Sub CommandButton1_Click()
Dim colorNum As Integer
colorNum = Val(txtColor.Value) ' テキストボックスから数値取得
If colorNum >= 1 And colorNum <= 56 Then
Range("A1").Interior.ColorIndex = colorNum
Else
MsgBox "1~56の値を入力してください", vbExclamation
End If
End Sub
Excel VBA セルを条件付きで背景色を変更|まとめ
方法 | 指定方法 | メリット | デメリット |
ColorIndex | 1~56の番号 | 簡単・扱いやすい | 色の種類が少ない |
RGB | RGB(赤, 緑, 青) | 色が自由に指定できる | コードがやや長くなる |
ExcelVBAでの 塗りつぶし は、単なる装飾ではなく データの視認性向上 に役立ちます。特に 条件付き塗りつぶし を活用すると、データ分析や異常値の発見がしやすくなるのでおすすめです。
「Excel VBAで自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。