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)