Excelで目次シートから新しく作成されるシートに自動で飛ぶハイパーリンクを設定したい場合、通常のHYPERLINK関数では未作成のシートを直接参照することはできません。しかし、VBA(マクロ)を使用することで、シート作成時に目次にリンクを自動で追加する仕組みを作ることが可能です。
HYPERLINK関数の制約
HYPERLINK関数は、参照先のシートやセルが存在している必要があります。未作成のシートを参照するとエラーになるため、関数だけで自動更新することはできません。
VBAを使った自動リンク作成
1. ExcelでAlt+F11を押してVBAエディタを開きます。
2. 「ThisWorkbook」を選択し、以下のコードを追加します。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim wsIndex As Worksheet
Set wsIndex = ThisWorkbook.Sheets("目次")
Dim lastRow As Long
lastRow = wsIndex.Cells(wsIndex.Rows.Count, 1).End(xlUp).Row + 1
wsIndex.Cells(lastRow, 1).Formula = "=HYPERLINK('#' & '" & Sh.Name & "' & "!A1", '" & Sh.Name & "')"
3. このコードは、新しいシートが作成されたときに目次シートの最後の行に自動でハイパーリンクを追加します。
注意点
– 目次シートの名前はコード内で正確に指定する必要があります。
– マクロを有効にしておく必要があります。
– 作成されるシート名が連番でも、名前が変更されるとリンク名も変更されます。
まとめ
Excelでは未作成のシートにHYPERLINK関数を直接使うことはできませんが、VBAを使えばシート作成時に目次に自動でリンクを追加することが可能です。これにより、シートが増えても目次から直接移動できる便利な仕組みを作ることができます。


コメント