ExcelVBA(マクロ)でワークシートの目次を作る方法/HyperLinks.addメソッドの使い方

parrot IT

シートを増やして色々な情報を作っていく場合、これを自由に移動できる目次があると便利かなと思い作ってみました。アレなら最後のコードコピペしても動きます。
ハイパーリンクを作成するHyperLinks.addメソッドを使用します。

スポンサーリンク

目次の作り方

目次1
たくさんシートがあるので、楽に移動するための目次を作りたいと思います。
目次2
今シートがいくつあるかは、WorkSheetsオブジェクトのCountプロパティで取得可能です。
目次3
これをFor Nextの最大値に使用し、WorkSheetsオブジェクトのNameプロパティを順番に出力して、シートの一覧を作ります。
目次4
もし目次シートはいらないのであればiを2からスタートし、Cellsの左をすべて-1すればOKです。
目次6
で、HyperLinks.Addメソッドを使用して、これらにリンクを設定します。
ハイパーリンクの設定
Hyperlinks.Add
※引数Anchor、Addressは必須
目次7
ActiveSheets=現在いるシートに対して処理を実行します。
目次8
Anchorはどのセルに対してリンクを設定するかなので、シートの名前を取得した時に一緒に同じセルに設定すればOKです。よってCellsで同様に指定します。
目次9
AddressとSubAddressはどちらもリンク先ですが、Addressのほうはブック(ファイル)の指定をするための引数なので、これは同じブック内で移動するのであれば空欄でOKです。ThisWorkbook.FullNameのように指定することもできます。
目次10
SubAddressで取得したシート名の後ろに「!A1」を付けて、行き先を設定します。
目次11
このコードを実行した後、任意のシート名を押すと、
目次12
そのシートに移動することができます。

このコードはActiveSheetに対して動作するので、Sheet2でも3でも同様に目次を作成することができます(ただしA列にデータがあったら上書きされます)。

' vba
Dim i As Integer
Dim wkshtcount As Integer
wkshtcount = Worksheets.Count ' シートの数
For i = 1 To wkshtcount
Cells(i, 1).Value = Worksheets(i).Name ' シートの名前を入力
' ハイパーリンクを設定
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
Address:="", SubAddress:=Cells(i, 1).Value & "!A1"
Next
Excel(エクセル):ハイパーリンク
Excelにおけるハイパーリンク関連操作等まとめです。 ハイパーリンクとは、要するに文字をクリックすると他のページやセルに飛ぶアレです。テキストAをクリックするとAを解説するテキストBへ飛ぶ……というような「文脈を超える」テキストをハイパ...
Excel(エクセル):ワークシート
ワークシート関連の操作方法まとめです。 ワークシートの使い方 ワークシートの作成・削除・挿入など、基本操作まとめです。 ワークシートのコピーについてです。 ブック間でやりとり 特定のシートを別の...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント