今回は VBAでシート数を取得する方法の解説です。
シート数が毎月、あるいは不定期に増えていくような場合、VBAを使って各シートに同じ作業をさせる場合は流動的に変化するシート数を取得しておく必要があります。
シート数を取得する方法のほか、シート数を取得することによって可能になる応用例を紹介します。
VBAでシート数を取得する方法
Countプロパティ
シート数を取得するには、Countプロパティ を使います。
Countプロパティは、コレクション内の要素数を含む整数 (Integer) を返します。
読み取り専用なので値を設定することはできず取得のみ可能です。
「コレクション」は今回のケースで言うと、Worksheets になるので;
のように使います。
難しいことは理解できなくても、このあと説明するサンプルコードを見れば一目瞭然なので心配無用です。
VBAでシート数を取得するサンプルコード
サンプルとして、仙台・東京・名古屋・大阪・福岡の5つのシートを持つエクセルブックを用意します。
▲こんな感じ
このブックの シート数 を、VBAを使ってメッセージボックスに表示すると以下のようなコードになります。
MsgBox "シート数は " & Worksheets.Count & " です。"
End Sub
これをエクセル上で実行すると;
このように、取得されたシート数「5」を使ってメッセージ表示することができます。
シート数を取得してできること
シートの数だけ作業を繰り返す
シート数を取得することで可能になることのひとつに、「シートの数だけ特定の作業を繰り返す」があります。
手作業でシートをひとつずつ開いてセルに値を入力するような作業を自動化することができます。
実務としてかなり魅力的です。
そして、このあと紹介するのはその一例です。ぜひ参考にしてください。
シート名を各シートのセルに表示する
サンプルのエクセルブックは先ほどのブックを使用します。
今回はVBAを使って、各シートのセルB1にシート名を自動入力する作業を「シート数だけ繰り返し」て、5つのシートすべてに各支店名を入力させます。
▲セルB1にそれぞれのシート名(=支店名)を入力したい
以下のコードを一例として挙げておきます。
Dim i As Integer For i = 1 To Worksheets.Count
Worksheets(i).Activate
ActiveSheet.Range("B1").Value = Worksheets(i).Name
Next i
End Sub
上のサンプルは、For~Next 文を使って、繰り返し回数の上限を Worksheets.Count としています。
また、Worksheetオブジェクトのインデックスを i として、各シートを順番に処理します。
このコードを実行すると;
福岡のシートが開いていて、セルB1にはシート名である「福岡」が入力された状態になっているはずです。
今回はシート「名」を取得する方法については、とくに解説しません。
過去記事で関数を使ったシート名の取得方法とVBAを使った方法の両方を取り上げていますので、ご興味がある方はそちらも合わせてご覧ください。
以上で『VBAでシート数を取得する方法と そこからできること』の解説は終了です。
その他の関連記事と合わせて活用してください。
関連記事・広告
併せて読んでおくとさらに便利
VBAで最終行を取得する方法と そこからできること|Excel VBA
VBA・最終行
VBAで最終行を取得する方法を解説。最終行の行番号を取得できることにより最終行の削除や、最終行までセルを選択したり繰り返したり色々なことが可能になります。
VBA カレントフォルダの取得と設定・変更|Excel VBA
VBA・CurDir関数
VBAで カレントフォルダ名 を取得したり、設定(指定)したり変更(移動)したりする方法について解説します。CurDir関数 や ChDirステートメント などの使い方についても触れています。
VBAで空白行を削除する方法|Excel VBA 高速技
VBA・Unionメソッド
VBAを使って空白行の削除方法を解説します。Unionメソッド を使用して空白行を高速で一括削除する方法をサンプルコード付きで解説。ぜひ参考にしてください。
VBA フォルダ内のファイル名一覧の取得|EXCEL VBA
VBA・一覧取得
VBAでフォルダ内のファイル名の一覧を取得する方法を解説。フォルダの中の複数ファイルを自動でひとつずつ展開しながら 連続処理をさせたいときに使える超便利テク!
※その他、関連記事はこの記事の下の方にもあります。