Excel VBA シート名一覧を表示する
最初にソースコードです。
コード
Sub Sheets_List()
Dim Num As Integer
Dim arr() As String
Dim i As Integer
Num = Worksheets.Count
ReDim arr(Num - 1)
For i = 1 To Num
arr(i - 1) = Worksheets(i).Name
Next i
MsgBox Join(arr, vbCrLf)
End Sub
アクティブなWorkbookにて、ワークシートの一覧を取得して、メッセージボックスで表示します。
最後のメッセージボックスのところをいじれば、取得したシート名一覧をどうにでも操ることが可能です。
機能解説
機能としては次のようにしています。
・シート数の取得
・配列型の変数で、配列の数をシート数に設定
・配列型の変数に、繰り返し処理でシート名を格納
・配列を改行で結合したものをメッセージボックスで表示
詳細
・シート数の取得
シート数は、「workbooks.Count」で取得できます。ミスるときは「workbooks」が複数形になってなかったりする点かと。英語が母国語でない日本人にありがち
・配列型の変数で、配列の数をシート数に設定
配列型の変数は「Dim arr() As String」で宣言しています。カッコをつけることで配列型の指定になります。
カッコに最初から数字を入れれば、配列の要素数を指定できます。
カッコに最初から数字を入れなければ、配列の要素数は未定です。そのため、シート数を確認した後「Redim」で要素数を再定義しています。
※最初から要素数を変数にすること(Dim arr(Num) As String)はできません。
・配列型の変数に、繰り返し処理でシート名を格納
通常の繰り返し処理です。ところどころ「-1」となっているのは、配列は「0」番目からスタートするためです。
・配列を改行で結合したものをメッセージボックスで表示
「Join(arr, vbCrLf)」で、配列の各要素を改行コードで結合しています。なので、要素が1行ごとに表示されます。
スペースで区切りたければ「Join(arr, " ")」です。
ちょっと役立ったなと思ったら、サポートいただけると嬉しいです。マウスを買い替える資金になります!