【Excel VBA】シート数を取得する(Count)

はじめに

今回は、シート数を取得する方法について解説します。
単純にシート数を知りたい場合や、ループに使用したい場合もあるかと思います。
シート数を取得するための基礎構文や、ループの方法などを解説していますので、ぜひ最後までお付き合いください。

この記事を読むメリット
  • シート数の取得方法が分かります。
  • シートのループ方法(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つ目のブックを例にしています。
目的のブックを参照させる方法は以下の記事を参照ください。

シートの数だけループする(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を使う方がスッキリしていて好きです!)

最後に

今回は、シート数を取得する方法について解説しました。

本記事が皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA