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

 

Excel VBA セルや範囲の背景色を変更し、視認性を向上させたり、条件付きフォーマットのようにデータの状態を色で示したりする。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

Excel VBA セルを条件付きで背景色を変更|シーン

以下のシーンで利用します。

1.強調したいデータ(例:期限切れ、異常値など)のハイライト

2.入力ミスのチェック結果を色で通知

3.条件に応じたセルの色分け(例:売上が一定以上なら緑、それ以下なら赤)

 

マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら

 

セルの背景色は ColorIndex または RGB を使って指定できます。

 

Excel VBA セルを条件付きで背景色を変更サンプルコード

 ColorIndexを使う方法(色番号指定)

Range("A1").Interior.ColorIndex = 3 ' A1セルを赤にする

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

・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

2025年解消したい。「毎日、やることが多すぎて…そんなあなたへ」
👉詳細はこちら

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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!