あなたの質問から、アクティブなシート以外をすべて非表示にする一種のナビゲーションを作成したいと思います。
これが探しているものである場合は、次のコードのようなものが必要になります。
モジュール内:
Global Const cStrHomeSheet As String = "Home"
Public Sub subGotoSheet(strSheetName As String)
エラー時 GoTo ErrorHandler
Dim wsActive As ワークシート
Application.ScreenUpdating = False
wsActive = ActiveSheet を設定
Sheets(strSheetName).Visible = xlSheetVisible
Sheets(strSheetName).Activate
wsActive.Visible = xlSheetVeryHidden
Application.ScreenUpdating = True
サブを終了
エラーハンドラ:
MsgBox "ワークシートが見つかりません" & strSheetName
サブ終了
Public Sub subGotoHomeSheet()
subGotoSheet cStrHomeSheet
サブ終了
Public Sub subGotoSheetFromCaller()
subGotoSheet Application.Caller
サブ終了
Public Sub subHideAll()
Dim ws As ワークシート
Application.ScreenUpdating = False
ActiveWindow.DisplayWorkbookTabs = False
Sheets(cStrHomeSheet).Visible = xlSheetVisible
Sheets(cStrHomeSheet).Activate
シート内の各 ws
If ws.Name cStrHomeSheet Then _
ws.Visible = xlSheetVeryHidden
次
Application.ScreenUpdating = True
サブ終了
Public Sub subShowAll()
Dim ws As ワークシート
Application.ScreenUpdating = False
ActiveWindow.DisplayWorkbookTabs = True
シート内の各 ws
ws.Visible = xlSheetVisible
次
Application.ScreenUpdating = True
サブ終了
さらに、次のコードをThisModule
モジュールに配置します。
プライベート サブ Workbook_Open()
subHideAll
サブ終了
説明 & 使用法:
モジュール内のコードはThisWorkbook
、ワークブックをロードするホーム ワークシート以外のすべてを非表示にします。(ワークシートを切り替えているという事実を隠すために、ウィンドウの左下にあるワークシート タブ バーも非表示にします)。
を呼び出すことで、subGotoSheet "DestinationSheet"
「アクティブ化」、つまりターゲット シートを再表示できます。古いシートは非表示になります。生活を少し楽にするために、呼び出すこともできます。subGotoHomeSheet
さらに重要なのは、を使用することsubGotoSheetFromCaller
です。これをボタン (またはその他の形状) と組み合わせると非常に便利です。ボタンまたは形状をワークシートに挿入する場合は、このマクロをそれに割り当てます。対象のシートに応じて項目に名前を付けるだけです (数式フィールドの左にある名前ボックスを使用)。ボタンをクリックすると、目的のシートが自動的に表示されます。
最後になりましたが、すべてのシートを表示および編集する「開発者モード」も必要になると思います。これを行うには を実行しsubShowAll
、戻るには を実行しますsubHideAll
。開発者モードとユーザー モードをすばやく切り替えることができるように、両方のマクロにショートカット キーを割り当てることをお勧めします。