了解です。
---
状況を整理すると以下の通りです。
* 新規シートを作成し、名前を6桁の数字に変更している。
* 目次シートのA3セルに6桁の数字を表示している。
* ハイパーリンクで目次から各シートのD1セルにジャンプしたい。
* シートの追加時にこのハイパーリンクも自動で6桁の数字に対応させたい。
ポイントは「ハイパーリンクのサブアドレス(ドキュメント内リンク)を動的に変える」ことです。VBAで可能です。
---
1. 目次シートにハイパーリンクを作成vba
Sub CreateHyperlinkToSheet()
Dim wsIndex As Worksheet
Dim wsTarget As Worksheet
Dim cell As Range
' 目次シート
Set wsIndex = ThisWorkbook.Sheets(\u0026quot;目次\u0026quot;)
Set cell = wsIndex.Range(\u0026quot;A3\u0026quot;)
' 左から4番目のシート
Set wsTarget = ThisWorkbook.Sheets(4)
' 6桁の数字をA3に入力(シート名と同じ)
cell.Value = wsTarget.Name
' 目次A3にハイパーリンクを作成
wsIndex.Hyperlinks.Add Anchor:=cell, Address:=\u0026quot;\u0026quot;, _
SubAddress:=\u0026quot;'\u0026quot; \u0026amp; wsTarget.Name \u0026amp; \u0026quot;'!D1\u0026quot;, _
TextToDisplay:=cell.Value
End SubSubAddress
ポイント:
* が「シート名+!セル参照」Address:=\u0026quot;\u0026quot;
* にすると「このドキュメント内リンク」になる
* シート名を6桁の数字にしておくと、リンク先も自動で対応する
---
2. 複数シートの目次リンクを一括作成vba
Sub UpdateTOC()
Dim wsIndex As Worksheet
Dim ws As Worksheet
Dim i As Long
Dim startRow As Long
Set wsIndex = ThisWorkbook.Sheets(\u0026quot;目次\u0026quot;)
startRow = 3 ' 目次開始行
' 既存のリンクをクリア
wsIndex.Range(\u0026quot;A3:A100\u0026quot;).ClearContents
' 左から4番目以降のシートを目次に追加
For i = 4 To ThisWorkbook.Sheets.Count
Set ws = ThisWorkbook.Sheets(i)
wsIndex.Cells(startRow, 1).Value = ws.Name
wsIndex.Hyperlinks.Add Anchor:=wsIndex.Cells(startRow, 1), Address:=\u0026quot;\u0026quot;, _
SubAddress:=\u0026quot;'\u0026quot; \u0026amp; ws.Name \u0026amp; \u0026quot;'!D1\u0026quot;, TextToDisplay:=ws.Name
startRow = startRow + 1
Next i
End SubHyperlinks.Add
---
まとめ:
* ハイパーリンクは を使うSubAddress にリンク先のシート名とセルを指定
*
* シート名を6桁数字にしておくと、目次とリンクが自動で対応する
---
希望であれば、既存の「新規シート作成+名前変更」のマクロに組み込む形で、目次更新とハイパーリンク作成まで自動化したサンプルも作れます。作りますか?