|
For Each...NextステートメントはVBAに熟達してくると大変便利な機能を持ったものであることが分かるようになります。このステートメントは、コレクション内のすべてのオブジェクト、または配列内のすべての要素をループして、それぞれのオブジェクトや要素に対して同じ操作を実行できます。 For Each a In b: (Exit For) : Next
For...NextステートメントとFor Each...Nextステートメントの違いは、前者は繰り返し回数を指定するのに対して、後者はコレクション内にオブジェクトが、または配列内に要素が存在する限り実行を繰り返すので、オブジェクトや要素の総数を指定しなくても良いという点です。Exit Forを使うことによって特定の条件下でループ内を抜けることももちろん可能です。 ワークブック内のすべてのシート名をメッセージボックスで表します Sub Sample1() Dim a As Object For Each a In Sheets MsgBox (a.Name) Next End Sub すべてのコマンドバーオブジェクトの名前をメッセージボックスで表します Sub Sample2() Dim a As Object For Each a In Application.CommandBars MsgBox a.Name Next End Sub Sample2のように、通常の画面操作からは引き出せない名前が分かります。コレクション名を変えてみれば他の様々なオブジェクト名が出力されます。 |