📊 Excel VBA Top100
🎨

ApplyConditionalFormatting

書式設定

A1:A100に条件付き書式を適用し、100より大きい値を黄色でハイライトします

指定した条件(特定値以上・以下・テキスト一致など)に基づいて、セルの背景色やフォント色を自動的に変更する条件付き書式をVBAで設定するマクロです。Excelの条件付き書式ダイアログよりも設定ステップが少なく、よく使うパターンを素早く適用できます。期限超過の日付を赤くする・目標達成値を緑で強調する・特定キーワードを含む行を色付けするなど、データの重要箇所を一目でわかるように強調できます。内部ではFormatConditionオブジェクトを使い、比較演算子とテキスト条件を組み合わせて複数パターンに対応しています。条件付き書式ダイアログでは数クリック必要な設定も、マクロなら実行ボタン一つで完了します。AlternateRowColorsのような固定書式とは異なり、データが変化しても条件を満たす限り自動的に色が更新され続ける点が最大の利点です。

ApplyConditionalFormatting デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: アクティブシートのA1:A100に数値データを用意してマクロを実行。100より大きいセルが黄色でハイライトされます。

🎯 活用シーン

  • ✓売上目標の達成・未達成を色分けして、チームの進捗状況を一目で把握できるダッシュボードを作成したいとき
  • ✓期日管理表で今日以降の期限を赤・直近のものを黄色にして、アクションが必要な案件を視覚的に強調したいとき
  • ✓在庫数が安全在庫以下になった商品を自動的に赤くハイライトして、発注漏れを防ぎたいとき
  • ✓プロジェクト管理表で遅延タスクを自動的に赤く表示し、担当者への注意喚起を仕組み化したいとき
  • ✓品質検査データで規格外の数値を自動ハイライトし、異常値の見逃しを防ぎたいとき

💡 実装のヒント

  • ▸既存の条件付き書式と競合する場合は、新しい条件が優先されます。不要な条件付き書式は事前にRemoveConditionalFormattingで削除しておくことをお勧めします。
  • ▸条件は数値比較(>、<、=、>=、<=)とテキスト一致(含む・等しい)に対応しています。より複雑な条件はExcelの条件付き書式ダイアログで追加設定してください。
  • ▸大きな範囲に条件付き書式を多数設定すると、ファイルのサイズ増加や動作速度低下の原因になる場合があります。必要な範囲・条件に絞ることをお勧めします。
  • ▸複数条件を同時に設定したい場合は、マクロ内のFormatConditionを追加する行を繰り返し呼び出す形で拡張できます。
  • ▸条件付き書式はブックの容量を増やす要因になるため、定期的にRemoveConditionalFormattingで棚卸しすることをお勧めします。

💻 VBAコード

Option Explicit

' 条件付き書式を適用するマクロ
' 対象範囲: ActiveSheetのA1:A100
' 条件: 値が100より大きいセルを黄色にハイライト

Sub ApplyConditionalFormatting()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cf As FormatCondition

    ' 対象シートの設定
    Set ws = ActiveSheet
    Set rng = ws.Range("A1:A100")

    ' 既存の条件付き書式を削除
    On Error Resume Next
    rng.FormatConditions.Delete
    On Error GoTo 0

    ' 新しい条件付き書式の作成
    Set cf = rng.FormatConditions.Add(xlCellValue, xlGreater, "100")
    
    ' フォーマット設定
    With cf
        .Interior.Color = RGB(255, 255, 0) ' 黄色
        .StopIfTrue = False
    End With

    ' メッセージ表示
    MsgBox "条件付き書式を適用しました。", vbInformation

    ' オブジェクトの解放
    Set cf = Nothing
    Set rng = Nothing
    Set ws = Nothing
End Sub