【ExcelVBA】各シートへのハイパーリンクを作成する方法

ExcelVBA

たくさんのシートがある場合、ハイパーリンクの一覧があると便利です。

今回は全シートへのハイパーリンクを一覧にする方法をご紹介します。

この記事を読むことで下の画像のようなことができるようになります。

ではいってみましょう。

プログラム

こちらが全シートのハイパーリンクを一覧にするプログラムです。

解説

ではひとつずつコードを解説していきます。

‘ ワークシート数のカウンタ
cnt = 1

まずはワークシートの数をカウントする変数 cnt を用意して初期値を 1 にしています。

‘ 全ワークシートをループ
For Each ws In ThisWorkbook.Worksheets

次に全シートをループするため For Each 文を使用しています。

For each … Next ステートメント

グループは配列かコレクションで1つずつ取り出されてエレメントに自動的に入ります。

つまり ThisWorkbook.Worksheets(ブックの全シート)が1シートずつ ws という変数に入ります。

‘ アクティブシートにハイパーリンクを設定
ActiveSheet.Hyperlinks.Add Anchor:=Cells(cnt, 1), _
Address:=””, _
SubAddress:=ws.Name & “!A1”, _
TextToDisplay:=ws.Name

まずは今回使用するハイパーリンクの関数を見てみましょう。

Hyperlinks.Add

Anchor にはハイパーリンクを設定するセルを指定しています。

最初は cnt = 1 なので Cells(1, 1)にハイパーリンクを設定しています。

リンク先は同じブックなので、Address=”” としています。

そして SubAddress には For each文で取り出されたシートの シート名!A1 を指定。

これによりリンク先は そのシートのA1セルとなります。

TextToDisplay でセルに表示する値はシート名としています。

‘ カウンタを増やす
cnt = cnt + 1

そして最後にカウンタを更新しています。

これにより、書き込み先のセルの行を1行下にずらしていくことができます。

実行結果

では実行してみましょう!

各シートへのハイパーリンクが一覧で作成されました!

さいごに

いかがだったでしょうか。

今回は各シートへのハイパーリンクを一覧表示するプログラムをご紹介しました。

今後も時短になりそうなプログラムをご紹介していきますので、よろしくお願いいたします。

コメント

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