見出し画像

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, " ")」です。

ちょっと役立ったなと思ったら、サポートいただけると嬉しいです。マウスを買い替える資金になります!