あなたが作ったExcelファイルの説明資料を準備する際に、ワークシート名の一覧を簡単に作りたいと思ったことはありませんか?
ワークシート数が多い場合に、シート名のタブをクリックしてコピーし、別シートに貼り付ける作業を繰り返すのは苦痛です。また、シート名を誤って変えてしまうリスクもあります。
そこで、本記事では、ワークシート名一覧を簡単に得ることができるマクロを作りましたので、紹介します。
使い方
マクロをコピペする
Visual Basicのエディタを開き、マクロをコピペして下さい。
個人用マクロブックに入れておくと便利です。
マクロの使い方が分からない方は、こちらをご覧ください。
'-----------------------------------------------------------------------
' Summary : ブック内のシート名をシートリストのA列にリストアップする
'-----------------------------------------------------------------------
Public Sub MakeAListOfSheetNames()
Const cstListSheetName As String = "シートリスト"
Dim i As Integer ' ループ制御変数
Dim intSheetFind As Integer ' シートが見つかったら1
Dim sht As Worksheet ' ワークシートオブジェクト
'「シートリスト」シートの有無の確認
For Each sht In Worksheets
' シート名を順次調べて、「シートリスト」ならループを抜ける
If StrComp(sht.Name, cstListSheetName, vbTextCompare) = 0 Then
Exit For
End If
Next sht
'「シートリスト」シートが見つからなければ作る
If sht Is Nothing Then
' シートを新たに追加
Set sht = Worksheets.Add(Before:=Worksheets(1))
'「シートリスト」と名付ける
sht.Name = cstListSheetName
End If
'「シートリスト」シートを選択する
Sheets(cstListSheetName).Select
' A列をクリアする
Range("A:A").Clear
' リストアップの際にシートリストを含めないため変数をクリア
intSheetFind = 0
' シート名を順にリストアップ
For i = 1 To Worksheets.Count
If Worksheets(i).Name <> cstListSheetName Then
Range("A" & (i - intSheetFind)) = Worksheets(i).Name
Else
intSheetFind = intSheetFind + 1
End If
Next i
End Sub
MakeAListOfSheetNamesを実行する
「シートリスト」というワークシートのA列に一覧が出来上がります。
順序は気にせずに作りましたが、ワークシートの並びの左から右の順で掲載されるようです。
実行例
既存のシートが左から「Sheet2」「Sheet1」と並んでいるので、A列にその順序で掲載されます。
「シートリスト」が存在していなければ一番左に作成されます。また、「シートリスト」は一覧には掲載されません。
コメント