【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!
シート名の取得(セルと配列に格納)|Excel VBA |
ブックの中の全てのシート名を取得して、セルまたは配列に格納します。
サンプル1はFor Each...Nextステートメントを使って、ブックの中の全てのワークシート名をセルに書き出します。
Sub Sample1()
Dim mySheet As Worksheet
Dim myRow As Long
myRow = 1
For Each mySheet In Worksheets '---(1)
Sheets("Sheet1").Cells(myRow, 1).Value = mySheet.Name
myRow = myRow + 1
Next
End Sub
ワークシートだけでなく全てのシートを対象にするには、Sheetsコレクションを使用します。(1)の「Worksheets」を「Sheets」に変更すると、グラフシートも含めた全てのシート名を書き出します。
サンプル2はFor...Nextステートメントを使って、全てのシート名をセルに書き出します。
Sub Sample2()
Dim i As Long
Dim mySheetCnt As Long
Dim mySheetName As String
mySheetCnt = ThisWorkbook.Sheets.Count
For i = 1 To mySheetCnt
mySheetName = Sheets(i).Name
Sheets("Sheet1").Cells(i, 2).Value = mySheetName
Next i
End Sub
サンプル3は、取得したシート名を配列に格納し、イミディエイトウィンドウに配列に格納した値を出力します。
Sub Sample3()
Dim i As Long
Dim mySheetCnt As Long
Dim mySheetName() As String
mySheetCnt = ThisWorkbook.Sheets.Count '---(1)
ReDim mySheetName(1 To mySheetCnt) '---(2)
For i = 1 To mySheetCnt
mySheetName(i) = Sheets(i).Name
Debug.Print "変数mySheetName(" & i & ")=" & mySheetName(i)
Next i
End Sub
シートの数は実行するまでわからないので、mySheetNameを動的配列で宣言しています。(1)でシートの数を取得し、(2)でシートの数だけ動的配列の要素を確保しています。
ワークシートが3枚、グラフシートが1枚ある場合、イミディエイトウィンドウには次のように表示されます。
【イミディエイトウィンドウの表示例】
変数mySheetName(1)=Sheet1
変数mySheetName(2)=Sheet2
変数mySheetName(3)=Graph1
変数mySheetName(4)=Sheet3