【VBA】テーブル(ListObject)全体に条件付き書式を適用する方法

Excelでは、範囲を「テーブル(ListObject)」として設定することで、データ管理が格段にしやすくなります。
VBAを使うと、この テーブル全体に条件付き書式を自動適用 することが可能です。

テーブルは行の追加や削除が頻繁に行われるため、範囲を固定せずに テーブルのデータ範囲に動的に条件付き書式を適用 するのがポイントです。


スポンサーリンク

1. 基本のコード例

例:「売上」テーブルの「金額」列で、100以上なら緑色にする」

Sub テーブル全体に条件付き書式()
    Dim tbl As ListObject
    Dim rng As Range
    
    '「売上」という名前のテーブルを取得
    Set tbl = ActiveSheet.ListObjects("売上")
    
    'テーブルのデータ範囲(ヘッダー除く)を取得
    Set rng = tbl.DataBodyRange
    
    '既存の条件付き書式を削除
    rng.FormatConditions.Delete
    
    '条件付き書式を追加(100以上 → 背景を緑色)
    rng.FormatConditions.Add _
        Type:=xlCellValue, _
        Operator:=xlGreaterEqual, _
        Formula1:="100"
    
    rng.FormatConditions(1).Interior.Color = RGB(0, 255, 0)
End Sub

スポンサーリンク

2. コードの解説

  • Set tbl = ActiveSheet.ListObjects("売上")
    → シート上にあるテーブル「売上」を取得しています。
    テーブルには [テーブルデザイン] タブ → テーブル名 で名前を付けられます。
  • tbl.DataBodyRange
    → テーブルの「ヘッダーを除いたデータ範囲」を表します。
    これを指定することで、行数が増減しても自動的に範囲が調整されます。
  • rng.FormatConditions.Delete
    → 条件付き書式を設定する前に一度削除しておくと、重複を防げます。
  • 条件付き書式の追加
    • Type:=xlCellValue … セルの値を基準に判定
    • Operator:=xlGreaterEqual … 「以上」
    • Formula1:="100" … 判定基準の値

スポンサーリンク

3. 列を限定して条件を設定する

テーブル全体ではなく、特定の列だけに条件を適用 したい場合は次のように書きます。

例:テーブル「売上」の「金額」列だけに条件付き書式を設定する

Sub テーブル列に条件付き書式()
    Dim tbl As ListObject
    Dim rng As Range
    
    Set tbl = ActiveSheet.ListObjects("売上")
    
    '「金額」列を範囲として取得
    Set rng = tbl.ListColumns("金額").DataBodyRange
    
    '既存の条件付き書式を削除
    rng.FormatConditions.Delete
    
    '条件付き書式を追加(200以上は赤文字)
    rng.FormatConditions.Add _
        Type:=xlCellValue, _
        Operator:=xlGreaterEqual, _
        Formula1:="200"
    
    rng.FormatConditions(1).Font.Color = RGB(255, 0, 0)
End Sub

👉 列名を指定できるので、列の位置が変わっても問題なく動作します。


4. テーブルならではのメリット

  • 行を追加しても自動で条件付き書式が適用される
  • 列名で指定できるため、可読性が高い
  • 複数テーブルを対象に処理を繰り返すことも可能

まとめ

  • VBAでは ListObjects を使ってテーブルを操作できる
  • DataBodyRange でヘッダーを除いたデータ範囲に書式を適用できる
  • 特定の列だけに設定する場合は ListColumns("列名").DataBodyRange を利用する

テーブルとVBAを組み合わせることで、データが追加・削除されても条件付き書式が自動で反映され、より効率的にデータ管理が可能になります。

コメント

タイトルとURLをコピーしました