Excel VBA | 複数ブックにまたがって条件付きでシートを再表示する

VBA
スポンサーリンク

ここでは 複数ブックにまたがって条件付きでシートを再表示する 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
  • 条件判定 → シート名やセルの値を使って柔軟に設定

練習課題

  1. 全ブックの「Sheet2」を再表示するコードを書いてみる
  2. 各シートのB1セルが「Show」と書かれていたら再表示するコードを作る
  3. 複数条件を組み合わせて「シート名がTempで始まり、A1セルが1以上なら再表示」にするコードを作る

こうした仕組みを作ると、複数ブックにまたがって条件付きでシートを再表示する便利ツールが完成します。

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