「vba シート for each in 何枚目」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
すべてのシートに対して処理を行うときに便利なFor Each~Nextループで、何枚目のシートなのかを調べるVBA(Visual Basic for Applications)のコードを探している方による検索です。
何枚目のシートかを調べるサンプルマクロ
参考になりそうな簡単なマクロをご紹介しておきます。
Dim ws As Worksheet
For Each ws In Worksheets
MsgBox ws.Index & "枚目" & vbCrLf & ws.Name
Next ws
上記のマクロを実行すると、下図のように、何枚目なのかとシートの名前が、メッセージボックスがワークシートの枚数だけ表示されます。
何個目かを表すIndexプロパティを持っているオブジェクトが結構ある
上記のコードの「ws.Index」が、WorksheetオブジェクトのIndexプロパティで何枚目かを取得している部分です。
今回は、WorksheetオブジェクトのIndexプロパティを使って、何枚目のワークシートかを調べたわけですが、Indexプロパティを持つオブジェクトは、割と存在しています。
オブジェクトブラウザーで「Index」を完全一致で検索すると、以下のとおりです。
何らかのコレクションのメンバーである単一オブジェクトの場合に、必ずIndexプロパティがあるとは言い切れませんが、上図のとおりIndexプロパティを持つオブジェクトは結構存在しています。今回ご紹介したマクロのように、何個目なのか・いくつ目なのかを調べたいというときに、そのオブジェクトにIndexプロパティが存在しないかを、まずは調べてみることをおすすめします。
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » Excel VBAのFor Each~Nextループで何枚目のシートかを調べるには