ここでは 複数ブックにまたがって条件付きでシート全体を非表示にする VBAの例を紹介します。ポイントは「開いている複数のブックをループし、シートの内容を判定して条件に応じて ws.Visible = xlSheetHidden を設定する」ことです。
基本例:シート名に「Test」が含まれていたら非表示
Sub 複数ブックでシート非表示()
Dim wb As Workbook
Dim ws As Worksheet
' 開いているすべてのブックを対象
For Each wb In Application.Workbooks
' このブック自身を除外したい場合は条件を追加
If wb.Name <> ThisWorkbook.Name Then
For Each ws In wb.Worksheets
' シート名に "Test" が含まれていたら非表示
If InStr(ws.Name, "Test") > 0 Then
ws.Visible = xlSheetHidden
End If
Next ws
End If
Next wb
End Sub
VB👉 開いているすべてのブックで、シート名に「Test」が含まれるシートを非表示にします。
応用例1:シート内の値で判定
Sub シート内容で非表示()
Dim wb As Workbook
Dim ws As Worksheet
For Each wb In Application.Workbooks
For Each ws In wb.Worksheets
' A1セルの値が「非表示」ならシートを隠す
If ws.Range("A1").Value = "非表示" Then
ws.Visible = xlSheetHidden
End If
Next ws
Next wb
End Sub
VB👉 各シートのA1セルに「非表示」と書いてあれば、そのシート全体を隠します。
応用例2:複数条件を組み合わせる
Sub 複数条件でシート非表示()
Dim wb As Workbook
Dim ws As Worksheet
For Each wb In Application.Workbooks
For Each ws In wb.Worksheets
' 条件1: シート名が「Temp」で始まる
' 条件2: B2セルの値が0以下
If Left(ws.Name, 4) = "Temp" And ws.Range("B2").Value <= 0 Then
ws.Visible = xlSheetHidden
End If
Next ws
Next wb
End Sub
VB👉 シート名が「Temp」で始まり、かつB2セルの値が0以下なら、そのシートを非表示にします。
ポイント
- シートを非表示にする →
ws.Visible = xlSheetHidden - 完全に非表示(ユーザーが再表示できない) →
ws.Visible = xlSheetVeryHidden - 複数ブックをループ →
For Each wb In Application.Workbooks - 条件判定 → シート名やセルの値を使って柔軟に設定
練習課題
- 全ブックの「Sheet2」を非表示にするコードを書いてみる
- 各シートのC1セルが「Hide」と書かれていたら非表示にするコードを作る
- 複数条件を組み合わせて「シート名がTempで始まり、A1セルが0以下なら非表示」にするコードを作る
こうした仕組みを作ると、複数ブックにまたがって条件付きでシート全体を非表示にする便利ツールが完成します。

