【VBA】条件付き書式をデータの最終行まで自動で適用する方法

Excelで条件付き書式を設定する際、データ量が毎回変わると「どこまで書式を適用するか」を固定するのが難しくなります。
例えば売上データや在庫リストなど、行数が増えたり減ったりするシートでは、最終行を自動的に判定して範囲を設定する方法 が便利です。

ここでは、VBAを使って「データの最終行まで自動的に条件付き書式を適用する方法」を詳しく解説します。


スポンサーリンク

1. 最終行を自動取得する基本の考え方

Excelでは、以下のような方法で最終行を取得できます。

  • End(xlUp) を使う方法
    👉 指定列の一番下から上方向に検索して、最後のデータ行を見つける
  • CurrentRegion を使う方法
    👉 データのかたまり(空白で囲まれた範囲)を自動的に判定

スポンサーリンク

2. End(xlUp) を使ったサンプル

例:A列にデータが入っている表で、2行目以降の範囲に条件付き書式を適用

Sub 条件付き書式_最終行まで_EndxlUp()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dataRange As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    'A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    '2行目から最終行までを対象
    Set dataRange = ws.Range("A2:A" & lastRow)
    
    '既存の条件付き書式を削除
    dataRange.FormatConditions.Delete
    
    '条件:100未満のセルを赤文字
    dataRange.FormatConditions.Add _
        Type:=xlCellValue, _
        Operator:=xlLess, _
        Formula1:="100"
    dataRange.FormatConditions(1).Font.Color = RGB(255, 0, 0)
End Sub

💡 ポイント

  • Cells(Rows.Count, "A").End(xlUp).Row で最終行を取得
  • データが増えても自動で対応

スポンサーリンク

3. CurrentRegion を使ったサンプル

CurrentRegion を使うと、範囲全体を一気に取得できます。

Sub 条件付き書式_最終行まで_CurrentRegion()
    Dim ws As Worksheet
    Dim dataRange As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    'A1を基準にデータのかたまりを取得
    Set dataRange = ws.Range("A1").CurrentRegion
    
    '見出し行(1行目)を除外して2行目以降を対象
    Set dataRange = dataRange.Offset(1, 0).Resize(dataRange.Rows.Count - 1)
    
    '既存の条件付き書式を削除
    dataRange.FormatConditions.Delete
    
    '条件:200以上のセルを黄色背景
    dataRange.FormatConditions.Add _
        Type:=xlCellValue, _
        Operator:=xlGreaterEqual, _
        Formula1:="200"
    dataRange.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub

💡 ポイント

  • CurrentRegion は空白で囲まれた範囲を自動認識
  • 列数や行数が変わっても柔軟に対応可能

4. どちらを使うべき?

  • End(xlUp) → 単一列を基準に最終行を取得する場合に便利
  • CurrentRegion → 表形式データ全体をまとめて処理したいときに便利

👉 実務では「売上表・在庫表」などの整った表は CurrentRegion
「特定の列を基準に範囲を決めたい場合」は End(xlUp) がよく使われます。


5. まとめ

  • 条件付き書式をVBAで設定する際は、最終行まで自動対応 させるのが実務的
  • End(xlUp) で列基準の最終行を取得できる
  • CurrentRegion を使えば表全体を自動判定できる
  • データが増減しても安心して条件付き書式を維持できる

コメント

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