099 大量のシートを管理するときシート名一覧の目次シートを作る | 『たった1日で即戦力になるExcelの教科書』著者・吉田拳の原稿執筆下書き帳

『たった1日で即戦力になるExcelの教科書』著者・吉田拳の原稿執筆下書き帳

Excelの関数や機能をマスターするだけでは意味がない!じゃああとは何が必要なのか…22万部のベストセラーであり日本で一番売れているExcelの本、『たった一日で即戦力になるExcelの教科書』の著者、吉田拳の執筆原稿の下書き帳です。


 たくさんのシートがあるExcelファイルの場合、先頭に目次シートを作り、各シー トへのハイパーリンクを設定しておけば利便性が高まります。しかし、これを手作 業でやろうとすると、意外と面倒で時間がかかってしまいます。マクロを使えば、一 瞬で作業を終わらせることができます。

 1. 目次を作りたいExcelファイルを開き、[Alt]+[F11]でVBEを立ち上げる
 2. 以下のコードを貼り付け、[F5]で実行する



図115-1 099


コード-------------

Sub 目次シート作成( )
 Application.ScreenUpdating = False
 Dim i As Long, r As Long
 Worksheets.Add before:=Sheets(1)
 ActiveSheet.Name = "目次"
 With Sheets("目次")
  .Cells(1, 1) = "シート名"
  For i = 1 To Sheets.Count
    If Sheets(i).Name <> "目次" Then

     r = .Cells(Rows.Count, 1).End(xlUp).Row+1
     .Cells(r, 1) = Sheets(i).Name
     .Hyperlinks.Add Anchor:=.Cells(r, 1), _
           Address:="", _
           SubAddress:=Sheets(i).Name & "!A1"
    End If
  Next
 End With
End Sub
-------------



解説-------------

画面更新の停止

カウンター変数「i」、「r」の宣言
新規シートを先頭に追加する。
作成したシートの名前を「目次」にする。
目次シートA1セルに「シート名」と入力する。
iが1からシート総数になるまで以下の処理を繰り返し行う。

シートの名前が「目次」以外のときに以下の処理を行う。
変数rに目次シートA列データ最終行に1を足した数字を入れる。
目次シートA列r行目のセルにシートiの名前を入れる。
A列r行目のセルに、シートiのA1セルへのハイパーリンクを設定する。
-------------


 シートは、VBAではシート名での指定の他に「Sheets(数字)」で指定ができます。この場合、sheets(1)が表示されている一番左のシートとなり、右に行く順 に1ずつ数が増えていきます。シートの入れ替えや削除を行っても、常に表示されている順番でシート番号が振られます。










1万人の業務効率を劇的に改善したExcel速技BEST100/PHP研究所
¥1,836
Amazon.co.jp