ここでは 複数ブックにまたがって条件付きでシートを再表示する VBAの例を紹介します。ポイントは「開いている複数のブックをループし、非表示になっているシートを条件に応じて再表示する」ことです。
基本例:すべての非表示シートを再表示
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
' 非表示シートを再表示
If ws.Visible <> xlSheetVisible Then
ws.Visible = xlSheetVisible
End If
Next ws
End If
Next wb
End Sub
VB👉 開いているすべてのブックで、非表示になっているシートを再表示します。
応用例1:シート名に「Temp」が含まれている場合だけ再表示
Sub 条件付きでシート再表示()
Dim wb As Workbook
Dim ws As Worksheet
For Each wb In Application.Workbooks
For Each ws In wb.Worksheets
If ws.Visible <> xlSheetVisible And InStr(ws.Name, "Temp") > 0 Then
ws.Visible = xlSheetVisible
End If
Next ws
Next wb
End Sub
VB👉 シート名に「Temp」が含まれていて非表示になっているシートだけを再表示します。
応用例2:セルの値で判定して再表示
Sub セルの値でシート再表示()
Dim wb As Workbook
Dim ws As Worksheet
For Each wb In Application.Workbooks
For Each ws In wb.Worksheets
' A1セルが「再表示」と書かれていたら再表示
If ws.Visible <> xlSheetVisible And ws.Range("A1").Value = "再表示" Then
ws.Visible = xlSheetVisible
End If
Next ws
Next wb
End Sub
VB👉 各シートのA1セルに「再表示」と書いてある場合のみ、そのシートを再表示します。
ポイント
- シートを再表示 →
ws.Visible = xlSheetVisible - 完全に隠されたシート(VeryHidden) も同じ方法で再表示可能
- 複数ブックをループ →
For Each wb In Application.Workbooks - 条件判定 → シート名やセルの値を使って柔軟に設定
練習課題
- 全ブックの「Sheet2」を再表示するコードを書いてみる
- 各シートのB1セルが「Show」と書かれていたら再表示するコードを作る
- 複数条件を組み合わせて「シート名がTempで始まり、A1セルが1以上なら再表示」にするコードを作る
こうした仕組みを作ると、複数ブックにまたがって条件付きでシートを再表示する便利ツールが完成します。


