はじめに
今回は、シート数を取得する方法について解説します。
単純にシート数を知りたい場合や、ループに使用したい場合もあるかと思います。
シート数を取得するための基礎構文や、ループの方法などを解説していますので、ぜひ最後までお付き合いください。
この記事を読むメリット
- シート数の取得方法が分かります。
- シートのループ方法(For/ForEach)のメリット・デメリットが理解できます。
- コピペで使える実践的なサンプルコードを掲載しています。
基本情報
Countプロパティ
シート数を取得するには、WorksheetオブジェクトのCountプロパティを使用します。
Countプロパティは、戻り値として シート数(数値型)を返却します。
構文
Worksheetオブジェクト.Count
戻り値
シート数(数値型)
サンプルコード
シート数を表示する
Countプロパティにてシート数を取得する方法です。
サンプルではメッセージボックスに表示していますが、用途に合わせて修正してご使用ください。
サンプルコード
Public Sub getWorksheetCount()
Dim sheetCount As Integer ' シート数
' 1つ目のブックのシート数を取得する
sheetCount = Workbooks(1).Worksheets.Count
' メッセージボックスに、ブック名とシート数を表示
MsgBox "ブック名:" & Worksheets(1).Name & vbCrLf & _
"シート数:" & sheetCount
End Sub
めい
上記のサンプルコードでは、1つ目のブックを例にしています。
目的のブックを参照させる方法は以下の記事を参照ください。
【Excel VBA】ブックの参照(Workbooks/ActiveWorkbook/ThisWorkbook)
ブックを参照する3つの方法について解説しています。基本的な構文から、エラーの回避方法、コピペで使える実践的なコードも紹介しています。
シートの数だけループする(For)
For文を使用してシートの数だけループさせる方法です。
サンプルではメッセージボックスにシート名を表示していますが、用途に合わせて修正してご使用ください。
サンプルコード
Public Sub outSheetNameUseForStatement()
Dim i As Integer ' ループカウンタ
' シート数分ループする
For i = 1 To Workbooks(1).Worksheets.Count
' メッセージボックスにシート名を表示する
MsgBox Workbooks(1).Worksheets(i).Name
Next i
End Sub
(おまけ)シートの数だけループする(ForEach)
Countプロパティは使用しませんが、For Eachを使用してシートをループさせる方法をご紹介します。
サンプルコード
Public Sub outSheetNameUseForEachStatement()
Dim wsObj As Worksheet ' Worksheetオブジェクト
' シート数分ループする
For Each wsObj In Workbooks(1).Worksheets
' メッセージボックスにシート名を表示する
MsgBox wsObj.Name
Next wsObj
End Sub
りゅう
ForEachでは、ループする順番の担保されていません。
Index単位でループしたい場合は、For文で回すようにしましょう。
(個人的には、順番を気にしない場合はFor Eachを使う方がスッキリしていて好きです!)
最後に
今回は、シート数を取得する方法について解説しました。
本記事が皆さんのお力になれば幸いです!
コメント