マクロで目次にリンクを追加

マクロ講座33回 
ブックにシートの目次シート名一覧を作ってリンクを追加

Excel 2013マクロ講座 33回

シート名一覧にハイパーリンクを追加

前回のマクロ講座32回でシート名一覧を作成しました。シートが多い場合は、シートへのリンクも追加した方が便利です。
今回は、Do...Loopステートメントを利用します。

(サンプルファイルは、こちらから 2013マクロ講座33回サンプルデータ

シート一覧にハイパーリンクを貼る

32回では、シートの1枚目にシート名一覧のリストを作成しました。
シート名一覧マクロ
このマクロのコードは、
Sub シート一覧マクロ()
    Dim i As Long
    For i = 2 To Sheets.Count
    Range("A" & i).Value = Worksheets(i).Name
    Next i
End Sub
実行すると、A2からシート名をシートの分作成します。
シート名一覧にハイパーリンクを追加
シート名のリストがすでにあるので、リストがなくなるまという条件で、ハイパーリンクを追加するというコードにします。
Do...Loopステートメント
Do...Loopステートメントは、4通りありますが、使うのは、
Do Until 条件式
  繰り返し実行する処理
  [Exit Do]
Loop
の方です。
条件式は、リストが空になるつまり、Do Until Range("A" & i).Value = ""まで
ハイパーリンクを追加しなさい。
コードは、次のようになります。
Sub シート名一覧ハイパーリンク()
    Dim i As Long
    i = 2
    Do Until Range("A" & i).Value = ""
        Worksheets(i - 1).Hyperlinks.Add _
            Anchor:=Range("A" & i) _
            , Address:=ThisWorkbook.FullName _
            , SubAddress:=Range("A" & i).Value & "!A1"
        i = i + 1
    Loop
End Sub
ハイパーリンクを追加するには、Hyperlinks.Add メソッドを使います。
Hyperlinks.Add メソッド
AnchorとAddressは、必須ですが、他の3つの引数は省略可能です。
実行すると、各シートへのハイパーリンクが追加されます。
ハイパーリンクが追加
ちなみにこのシートのハイパーリンクを削除するマクロは、
Sub ハイパーリンク削除()
    Worksheets("このシート").Hyperlinks.Delete
End Sub
となります。
今日の講義は以上です。お疲れ様でした。