マクロで目次にリンクを追加
マクロ講座33回
![ブックにシートの目次シート名一覧を作ってリンクを追加](gazo2013/2013_macro_33.png)
![ブックにシートの目次シート名一覧を作ってリンクを追加](gazo2013/2013_macro_33.png)
Excel 2013マクロ講座 33回
シート名一覧にハイパーリンクを追加
前回のマクロ講座32回でシート名一覧を作成しました。シートが多い場合は、シートへのリンクも追加した方が便利です。
今回は、Do...Loopステートメントを利用します。
(サンプルファイルは、こちらから 2013マクロ講座33回サンプルデータ)
シート一覧にハイパーリンクを貼る
32回では、シートの1枚目にシート名一覧のリストを作成しました。
![シート名一覧マクロ](gazo2013/macro/2013_macro_32-04.png)
このマクロのコードは、
![シート名一覧にハイパーリンクを追加](gazo2013/macro/2013_macro_33-01.png)
![シート名一覧マクロ](gazo2013/macro/2013_macro_32-04.png)
このマクロのコードは、
Sub シート一覧マクロ() Dim i As Long For i = 2 To Sheets.Count Range("A" & i).Value = Worksheets(i).Name Next i End Sub実行すると、A2からシート名をシートの分作成します。
![シート名一覧にハイパーリンクを追加](gazo2013/macro/2013_macro_33-01.png)
シート名のリストがすでにあるので、リストがなくなるまという条件で、ハイパーリンクを追加するというコードにします。
![Do...Loopステートメント](gazo2013/macro/do_loop.png)
![Do...Loopステートメント](gazo2013/macro/do_loop.png)
Do...Loopステートメントは、4通りありますが、使うのは、
条件式は、リストが空になるつまり、Do Until Range("A" & i).Value = ""まで
ハイパーリンクを追加しなさい。
コードは、次のようになります。
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 メソッド](gazo2013/macro/hyperlinksadd.png)
AnchorとAddressは、必須ですが、他の3つの引数は省略可能です。
![Hyperlinks.Add メソッド](gazo2013/macro/hyperlinksadd.png)
AnchorとAddressは、必須ですが、他の3つの引数は省略可能です。
実行すると、各シートへのハイパーリンクが追加されます。
![ハイパーリンクが追加](gazo2013/macro/2013_macro_33-02.png)
![ハイパーリンクが追加](gazo2013/macro/2013_macro_33-02.png)
ちなみにこのシートのハイパーリンクを削除するマクロは、
Sub ハイパーリンク削除() Worksheets("このシート").Hyperlinks.Delete End Subとなります。
今日の講義は以上です。お疲れ様でした。