たくさんのシートがある場合、ハイパーリンクの一覧があると便利です。
今回は全シートへのハイパーリンクを一覧にする方法をご紹介します。
この記事を読むことで下の画像のようなことができるようになります。

ではいってみましょう。
プログラム
こちらが全シートのハイパーリンクを一覧にするプログラムです。
Sub addHyperLink()
' ワークシート数のカウンタ
cnt = 1
' 全ワークシートをループ
For Each ws In ThisWorkbook.Worksheets
' アクティブシートにハイパーリンクを設定
ActiveSheet.Hyperlinks.Add Anchor:=Cells(cnt, 1), _
Address:="", _
SubAddress:=ws.Name & "!A1", _
TextToDisplay:=ws.Name
' カウンタを増やす
cnt = cnt + 1
Next
End Sub
解説
ではひとつずつコードを解説していきます。
‘ ワークシート数のカウンタ
cnt = 1
まずはワークシートの数をカウントする変数 cnt を用意して初期値を 1 にしています。
‘ 全ワークシートをループ
For Each ws In ThisWorkbook.Worksheets
次に全シートをループするため For Each 文を使用しています。

グループは配列かコレクションで1つずつ取り出されてエレメントに自動的に入ります。
つまり ThisWorkbook.Worksheets(ブックの全シート)が1シートずつ ws という変数に入ります。
‘ アクティブシートにハイパーリンクを設定
ActiveSheet.Hyperlinks.Add Anchor:=Cells(cnt, 1), _
Address:=””, _
SubAddress:=ws.Name & “!A1”, _
TextToDisplay:=ws.Name
まずは今回使用するハイパーリンクの関数を見てみましょう。

Anchor にはハイパーリンクを設定するセルを指定しています。
最初は cnt = 1 なので Cells(1, 1)にハイパーリンクを設定しています。
リンク先は同じブックなので、Address=”” としています。
そして SubAddress には For each文で取り出されたシートの シート名!A1 を指定。
これによりリンク先は そのシートのA1セルとなります。
TextToDisplay でセルに表示する値はシート名としています。
‘ カウンタを増やす
cnt = cnt + 1
そして最後にカウンタを更新しています。
これにより、書き込み先のセルの行を1行下にずらしていくことができます。
実行結果
では実行してみましょう!

各シートへのハイパーリンクが一覧で作成されました!
さいごに
いかがだったでしょうか。
今回は各シートへのハイパーリンクを一覧表示するプログラムをご紹介しました。
今後も時短になりそうなプログラムをご紹介していきますので、よろしくお願いいたします。
コメント