📊 Excel VBA Top100
📋

NavigateToSheet

シート管理

指定したシートにジャンプする

特定のワークシートに素早くジャンプするVBAマクロです。Worksheets("シート名").Activateメソッドで目的のシートを直接アクティブ化できます。入力ボックスやドロップダウンリストでシート名を選択してジャンプする対話型ナビゲーターや、ボタンにマクロを割り当てたダッシュボードメニューとして活用できます。シート数が多いブックでの操作効率を大幅に改善します。内部ではWorksheets("シート名").Activateメソッドを呼び出すだけのシンプルな仕組みですが、InputBoxやComboBoxと組み合わせることで対話的なナビゲーションUIに発展させられます。ListAllSheetsで作成した目次シートのハイパーリンクと組み合わせれば、クリック操作だけで巨大なブックを軽快に移動できる環境が整います。

NavigateToSheet デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行するとシート一覧から選択するダイアログが表示され該当するシートに移動する

🎯 活用シーン

  • ✓100シート以上あるブックの目次・ナビゲーションパネルを作成
  • ✓ダッシュボードボタンから各部門シートへワンクリックジャンプ
  • ✓マクロメニューから目的のレポートシートに素早くアクセス
  • ✓月別・支店別など大量のシートを持つブックで、目的のシートまで素早く移動したいとき
  • ✓経理担当者が日々使う複数の集計シート間を、メニューから一発で切り替えたいとき

💡 実装のヒント

  • ▸InputBoxでシート名を入力させてActivateするとインタラクティブになります
  • ▸シート名の一覧をComboBoxに表示するユーザーフォームが実用的です
  • ▸存在しないシート名はOn ErrorでエラーハンドリングできGracefulです
  • ▸存在しないシート名が入力された場合に備え、On Error Resume Nextとエラーメッセージ表示を組み合わせてください。
  • ▸頻繁に使うシートへのショートカットとして、ツールバーやリボンにマクロを登録しておくとさらに便利です。

💻 VBAコード

' NavigateToSheet
' -----------------
' Macro Name: NavigateToSheet
' Description: 指定したシートにジャンプする
' Parameters: なし
' Returns: なし
' Usage: 実行するとシート一覧から選択するダイアログが表示され該当するシートに移動する
' -----------------

Sub NavigateToSheet()
    Dim ws As Worksheet
    Dim sheetList As String
    Dim sheetName As String
    Dim i As Long

    On Error GoTo ErrorHandler

    sheetList = "移動先のシート名を入力:" & vbCrLf & vbCrLf
    For i = 1 To Worksheets.Count
        sheetList = sheetList & "  " & i & ": " & Worksheets(i).Name & vbCrLf
    Next i

    sheetName = InputBox(sheetList, "シート移動", "")

    If sheetName = "" Then
        Exit Sub
    End If

    If IsNumeric(sheetName) Then
        i = CLng(sheetName)
        If i >= 1 And i <= Worksheets.Count Then
            Worksheets(i).Select
            MsgBox "「" & Worksheets(i).Name & "」に移動しました。", vbInformation
        Else
            MsgBox "無効な番号です。", vbExclamation
        End If
    Else
        On Error Resume Next
        Set ws = Worksheets(sheetName)
        On Error GoTo ErrorHandler

        If ws Is Nothing Then
            MsgBox "「" & sheetName & "」は存在しません。", vbExclamation
        Else
            ws.Select
            MsgBox "「" & sheetName & "」に移動しました。", vbInformation
        End If
    End If
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub