ExcelVBA セルを条件付きで背景色を変更して視認性を向上する方法

 

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ベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

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エキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問