Excelでシート名の目次を自動作成する

Excelでシート名の目次をVBAを使って作成する方法です。下記のようなシートのExcelワークシートがあります。「シート1」「シート2」「シート3」「シート4」のシートがあります。

「目次」シートにシート1からのシート名の目次を作って、目次のシート名をクリックすると各シートにジャンプするようにします。

VBAコードは下記のとおりです。ポイントは.Hyperlinksです。

  • Anchor リンクを配置するセル位置です。
  • Address リンクのアドレスです。今回は同じExcelシート内なので空欄にします。
  • SubAddress リンクするシート名です。シート名はシングルクォーテーションで囲んでください。リンク先でのセル位置を指定したい場合は!の後にセル位置を追記してください。例では!A1でA1セルにカーソルが行くようにします。
  • TextToDisplay 表示する文字列です。ここではシート名にしました。

コードをコピー&ペーストするときは下記を使ってください。

すぐ動かせるサンプルExcelワークシートはGitHubに置いてあります。

tkizawa/excel_vba_sample_sheetname_index: Excel VBAで作るシート名での目次リンク作成 (github.com)

Sub 目次作成()
Dim sheet1 As Object
Dim count As Integer

With Worksheets(“目次”)
.Cells(1, 1).Value = “目次”
count = 2
For Each sheet1 In Worksheets
‘ 目次シートを目次から除外する
If sheet1.Name <> “目次” Then
      .Hyperlinks.Add Anchor:=.Cells(count, 1), Address:=””, SubAddress:=”‘” + sheet1.Name + “‘” + “!A1”, TextToDisplay:=sheet1.Name
count = count + 1
End If
Next sheet1
End With

End Sub

実際に動かす場合が不明な場合は下記のように操作してください。

VBAでコードを書きます。下準備としては、Excelのリボンメニューから[開発]-[Visual Basic]をクリック、またはALT+F11キーを押します。

左側のモジュール一覧のところで右クリックしてメニューから[挿入]-[標準モジュール]を選択します。

空のテキスト入力画面が出てきますので、上記のソースコードをコピー&ペーストしてください。

Visual Basicの画面から[ツール]-[マクロ]を選択します。マクロ名から[目次作成]を選択して[実行]ボタンをクリックします。

[目次]シートにシートごとの目次が作成できました。

すぐ動かせるサンプルExcelワークシートはGitHubに置いてあります。

tkizawa/excel_vba_sample_sheetname_index: Excel VBAで作るシート名での目次リンク作成 (github.com)

タイトルとURLをコピーしました