category name  »  page title date

ワークシート表示・隠蔽

どっかのワークシートのセルを参照したい、そのシートを表示したい、あるいはその存在を隠したい、といった要求は、頻繁に発生します。
そのための Public な関数を作ってみました。各ワークシートの名前は、最初に定数として定義しておきます。ワークシートの名前が動的に変わるということは、めったにないでしょうから。
シートを表示するのに、ThisWorkbook.Worksheets("A").Activate とするよりも、GoToSheet(AsheetName) とした方が簡単だし、拡張性も大きい。途中で気が変わって "A" ではなく "Dashboard" に改名したいと思ったら、AsheetName = "Dashboard" に変更すればよいだけで、一切ほかをいじる必要はありません。
実際の便からは、ワークシートの名前の Public な定義は別の定義用のモジュールに書いておくのがスマートでしょう。

標準モジュール  GetSheetObj(), GoToSheet(), HideSheets()

----- ワークシートの名前の定義
Public Const AsheetName = "A"
Public Const BsheetName = "B"
Public Const CsheetName = "C"
Public Const DsheetName = "D"
Public Const EsheetName = "E"
Private Const hiddenSheetNames = _
      BsheetName & "," & _
      CsheetName & "," & _
      DsheetName
      
'----- ワークシート・オブジェクトの取得
Public Property Get GetSheetObj(sheetName)
      Set GetSheetObj = ThisWorkbook.Worksheets(sheetName)
End Property

'----- 所定のワークシートの表示
Public Sub GoToSheet(sheetName)
      GetSheetObj(sheetName).Activate
End Sub

'----- 所定のワークシートのシートタブの一括隠蔽・表示
Public Property Let HideSheets(sw)
Dim hiddenSheets, sheetName
      hiddenSheets = Split(hiddenSheetNames, ",")
      For Each sheetName In hiddenSheets
            GetSheetObj(sheetName).Visible = Not sw
      Next
End Property

HideSheets は、hiddenSheetNames に列挙した "B","C","D" というワークシートのシートタブ(エクセル画面最下段)上での表示を、一括して隠したり再表示したりします。

HideSheets = True     で hiddenSheetNames のシートを隠す
HideSheets = False    で再表示

シートタブが隠されたワークシートは存在が見えなくなり、手動で表示することはできなくなります。