Excel VBA | 複数ブックにまたがって条件付きで書式を自動設定する

VBA
スポンサーリンク

いいですね!ここでは 複数ブックにまたがって条件付きで書式を自動設定する VBAの例を紹介します。ポイントは「開いている複数のブックをループし、セルの値を判定して条件に応じて書式を変える」ことです。


基本例:負の数なら赤背景、正の数なら緑背景

Sub 複数ブックで条件付き書式()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim c As Range
    
    ' 開いているすべてのブックを対象
    For Each wb In Application.Workbooks
        ' このブック自身を除外したい場合は条件を追加
        If wb.Name <> ThisWorkbook.Name Then
            For Each ws In wb.Worksheets
                ' 各シートの対象範囲を指定(例: A2:A10)
                For Each c In ws.Range("A2:A10")
                    If IsNumeric(c.Value) Then
                        If c.Value < 0 Then
                            c.Interior.Color = RGB(255, 200, 200) ' 赤系
                            c.Font.Color = RGB(200, 0, 0)         ' 文字も赤
                        Else
                            c.Interior.Color = RGB(200, 255, 200) ' 緑系
                            c.Font.Color = RGB(0, 100, 0)         ' 文字も緑
                        End If
                    End If
                Next c
            Next ws
        End If
    Next wb
End Sub
VB

👉 開いているすべてのブックのA2~A10をチェックし、負の数は赤背景+赤文字、正の数は緑背景+緑文字に自動設定します。


応用例1:特定ブックだけ対象にする

Sub 特定ブックに条件付き書式()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim c As Range
    
    For Each wb In Application.Workbooks
        If wb.Name = "SalesData.xlsx" Or wb.Name = "Budget.xlsx" Then
            For Each ws In wb.Worksheets
                For Each c In ws.Range("B2:B20")
                    If IsNumeric(c.Value) Then
                        If c.Value >= 100 Then
                            c.Interior.Color = RGB(200, 200, 255) ' 青系
                        Else
                            c.Interior.Color = RGB(255, 255, 150) ' 黄色系
                        End If
                    End If
                Next c
            Next ws
        End If
    Next wb
End Sub
VB

👉 「SalesData.xlsx」と「Budget.xlsx」だけを対象に、値が100以上なら青、未満なら黄色に。


応用例2:複数条件を組み合わせる

Sub 複数条件で書式設定_複数ブック()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim c As Range
    
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            For Each ws In wb.Worksheets
                For Each c In ws.Range("C2:C10")
                    If IsNumeric(c.Value) Then
                        Select Case c.Value
                            Case Is < 0
                                c.Interior.Color = RGB(255, 150, 150) ' 赤
                            Case 0
                                c.Interior.Color = RGB(255, 255, 150) ' 黄
                            Case Is > 100
                                c.Interior.Color = RGB(150, 200, 255) ' 青
                            Case Else
                                c.Interior.Color = RGB(200, 255, 200) ' 緑
                        End Select
                    End If
                Next c
            Next ws
        End If
    Next wb
End Sub
VB

👉 複数ブックにまたがって「負=赤」「0=黄」「100以上=青」「その他=緑」の条件付き書式を自動設定します。


ポイント

  • 複数ブックをループFor Each wb In Application.Workbooks
  • 特定ブックだけ対象If wb.Name = "Book1.xlsx" のように条件を追加
  • 複数条件IfSelect Case を使うとわかりやすい
  • 書式設定.Interior.Color(背景色)、.Font.Color(文字色)、.Font.Bold(太字)などを組み合わせる

練習課題

  1. 開いているすべてのブックの「B列」を対象にして、負の数は赤背景、100以上は青文字にする
  2. 特定ブックだけを対象にして、0なら黄色、正の数なら緑にする
  3. 複数条件を組み合わせて「負=赤」「0=黄」「正=緑」「100以上=青」にする

こうした仕組みを作ると、複数ブックにまたがって条件付きで書式を自動設定する便利ツールが完成します。

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