スポンサーリンク

【VBA】条件付き書式を他シートや別ブックにも適用できる構造化マクロの考え方

条件付き書式のVBAコードは、単一のシートや範囲を対象に書くことが多いですが、実務では 複数シートや複数ブックに同じルールを適用したい 場面もよくあります。

この記事では、再利用性の高い「構造化マクロ」として条件付き書式を組み立てる考え方を解説します。


スポンサーリンク

1. なぜ構造化が必要なのか?

  • シートが増えるたびにコードを書き直すのは非効率
  • ブックが変わっても同じルールを適用したい場合 に対応できる
  • 一度作れば何度も呼び出せる「汎用的な部品」 として活用できる

スポンサーリンク

2. サブルーチン化して再利用する

サンプル:共通の条件付き書式を適用するサブルーチン

Sub ApplyConditionalFormatting(targetRange As Range)
    '対象範囲の条件付き書式をリセット
    targetRange.FormatConditions.Delete
    
    '条件1:100未満 → 赤文字
    targetRange.FormatConditions.Add _
        Type:=xlCellValue, _
        Operator:=xlLess, _
        Formula1:="100"
    targetRange.FormatConditions(1).Font.Color = RGB(255, 0, 0)
    
    '条件2:200以上 → 青文字
    targetRange.FormatConditions.Add _
        Type:=xlCellValue, _
        Operator:=xlGreaterEqual, _
        Formula1:="200"
    targetRange.FormatConditions(2).Font.Color = RGB(0, 0, 255)
End Sub

💡 このサブルーチンを作っておけば、あとは ApplyConditionalFormatting を呼び出すだけで使えます。


スポンサーリンク

3. 複数シートに適用する例

Sub 条件付き書式_全シートに適用()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rng As Range
    
    For Each ws In ThisWorkbook.Sheets
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        Set rng = ws.Range("A2:A" & lastRow)
        Call ApplyConditionalFormatting(rng)
    Next ws
End Sub

ポイント

  • すべてのシートを For Each ws In ThisWorkbook.Sheets で順に処理
  • サブルーチンを呼び出すだけで共通ルールを適用できる

スポンサーリンク

4. 別ブックに適用する例

Sub 条件付き書式_別ブックに適用()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rng As Range
    
    '既に開いているブックを指定
    Set wb = Workbooks("SalesData.xlsx")
    
    For Each ws In wb.Sheets
        lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
        Set rng = ws.Range("B2:B" & lastRow)
        Call ApplyConditionalFormatting(rng)
    Next ws
End Sub

ポイント

  • Workbooks("ブック名.xlsx") で対象ブックを指定
  • 構造が同じ複数ブックに横展開できる

5. 構造化マクロのメリット

  • 再利用性が高い:異なる範囲・シート・ブックに流用可能
  • メンテナンス性向上:条件を変更するときはサブルーチンだけ直せばOK
  • 作業効率アップ:1つのマクロで大量のシート・ブックに書式設定できる

6. まとめ

  • 条件付き書式を「サブルーチン化」することで汎用性が高まる
  • 複数シート・別ブックに簡単に適用できる
  • 実務では共通ルールを一括適用するシナリオに非常に有効

コメント

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