Excel VBA | 複数ブックにまたがって条件付きでセルを非表示(隠す)

VBA
スポンサーリンク

ここでは 複数ブックにまたがって条件付きでセルを非表示(隠す) VBAの例を紹介します。Excelでは「セルそのものを非表示」にする機能はありませんが、行や列を非表示にすることで「セルを隠す」ことができます。条件付きで値を判定し、対象の行や列を非表示にする仕組みを作ります。


基本例:負の数がある行を非表示

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.EntireRow.Hidden = True   ' 負の数なら行を非表示
                        Else
                            c.EntireRow.Hidden = False  ' それ以外は表示
                        End If
                    End If
                Next c
            Next ws
        End If
    Next wb
End Sub
VB

👉 開いているすべてのブックで、A列に負の数がある行を非表示にします。


応用例1:特定列を条件付きで非表示

Sub 特定列を非表示()
    Dim wb As Workbook
    Dim ws As Worksheet
    
    For Each wb In Application.Workbooks
        If wb.Name = "SalesData.xlsx" Or wb.Name = "Budget.xlsx" Then
            For Each ws In wb.Worksheets
                ' B列の合計が100未満なら列を非表示
                If Application.WorksheetFunction.Sum(ws.Range("B2:B20")) < 100 Then
                    ws.Columns("B").Hidden = True
                Else
                    ws.Columns("B").Hidden = False
                End If
            Next ws
        End If
    Next wb
End Sub
VB

👉 「SalesData.xlsx」と「Budget.xlsx」だけを対象に、B列の合計が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:C20")
                    If IsNumeric(c.Value) Then
                        Select Case c.Value
                            Case Is < 0
                                c.EntireRow.Hidden = True   ' 負の数 → 行非表示
                            Case 0
                                ws.Columns("C").Hidden = True ' 0なら列非表示
                            Case Is > 100
                                c.EntireRow.Hidden = False  ' 100以上 → 表示
                        End Select
                    End If
                Next c
            Next ws
        End If
    Next wb
End Sub
VB

👉 複数ブックにまたがって「負=行非表示」「0=列非表示」「100以上=表示」の条件付き処理を行います。


ポイント

  • 行を非表示c.EntireRow.Hidden = True
  • 列を非表示ws.Columns("B").Hidden = True
  • 複数ブックをループFor Each wb In Application.Workbooks
  • 条件分岐IfSelect Case を活用

練習課題

  1. 全ブックの「B列」を対象にして、負の数があればその行を非表示にする
  2. 特定ブックだけを対象にして、列合計が一定未満なら列を非表示にする
  3. 複数条件を組み合わせて「負=行非表示」「0=列非表示」「100以上=表示」にする

こうした仕組みを作ると、複数ブックにまたがって条件付きでセルを非表示(行や列を隠す)する便利ツールが完成します。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました