どっかのワークシートのセルを参照したい、そのシートを表示したい、あるいはその存在を隠したい、といった要求は、頻繁に発生します。
そのための 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 で再表示
シートタブが隠されたワークシートは存在が見えなくなり、手動で表示することはできなくなります。