Excelシートが増えてきたから目次が欲しいな
VBAを使えば目次リンクを一発で作成できるよ!
コピペで作れるように解説するね
目次を作ってくれるボタンを配置
ボタンの配置
[開発]タブ → [挿入] → [ActiveXコントロール] → ボタンをクリック
VBAソースコード
次のソースコードをコピペ!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
'***************************************************** ' 定数 '***************************************************** ' 目次 Private Const SH_MOKUJI_SHEET As String = "目次" '***************************************************** ' イベント '***************************************************** ' ' 機 能:登録ボタン押下時イベント ' ' 引 数:なし ' ' 機能説明:登録ボタン押下時イベント ' ' 戻 り 値:なし ' ' 備 考:なし ' Public Sub btnCreateMokuji_Click() Call mokujisakusei End Sub '***************************************************** ' 関数 '***************************************************** ' ' 機 能:目次作成 ' ' 引 数:なし ' ' 機能説明:目次とテンプレToolは無視 ' ' 戻 り 値:なし ' ' 備 考:なし ' Private Sub mokujisakusei() Dim number As Long Dim i As Long ' リンクのNo初期化 number = 1 '目次クリア Columns("B").Clear For i = 1 To Worksheets.Count ' 必須のシート以外目次を作成 If SH_MOKUJI_SHEET <> Worksheets(i).Name Then ActiveSheet.Hyperlinks.Add Anchor:=Range("b" & number + 1), _ Address:="", _ SubAddress:=Worksheets(i).Name & "!A1", _ TextToDisplay:=CStr(number) & "." & Worksheets(i).Name ' カウントアップ number = number + 1 End If Next End Sub |
ソースコードの解説
目次として不要なシート名を除外するために
目次シート名を定数化
ファイルの保存
当然ですがVBAを使用する場合はマクロ有効ブックで保存
目次ボタンのプロパティを変更
ボタンのプロパティを編集
ボタンを右クリック、[プロパティ]をクリック
[開発タブ]のプロパティでも可能
ボタンの名前と表示名を変更
オブジェクト名:btnCreateMokuji
Caption:目次作成
動作確認
目次作成ボタンをクリック、「1.テスト」リンクが作成されている
まとめ
Excelでの目次シートは必須ですよね
コピペで実装可能なので、ぜひ活用して下さい
コメント