For Each ステートメントとは
For Each ステートメントは、配列やコレクションの各要素に対して繰り返し処理を行う場合に使用します。
【構文】 Dim 変数 as オブジェクト型(バリアント型変数) For Each 変数 In オブジェクトコレクション名(配列名) ***変数を使った処理*** Next
コレクションの各要素に対して繰り返し処理を行う場合
下記例は、For Eachステートメントを使用して、ThisWorkbook の Worksheetsコレクションの各要素(Worksheet)を変数Ws に順に格納し、そのシート名をメッセージボックスに表示させています。
↓↓↓ThisWorkbook の Worksheets「Sheet1」「Sheet2」「Sheet3」
Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets MsgBox Ws.Name Next Ws
- 変数WsをWorksheet型で宣言します。
- ThisWorkbookの一番左のWorksheetから順に、変数Wsに格納されます。
1回目処理時:Ws=Sheet1
2回目処理時:Ws=Sheet2
3回目処理時:Ws=Sheet3
そのWsの名前をメッセージボックス表示させているので→
→
と、順に表示されます。 - Sheet3の右側にシートが存在しないので、ここで For Each の処理は終了します。
配列に対して繰り返し処理を行う場合
下記例は、For Eachステートメントを使用して、配列 Rooms の中身を Room に順に格納し、その中身をメッセージボックスに表示させています。
↓↓↓配列 Rooms「1号室」「2号室」「3号室」
1号室 | 2号室 | 3号室 |
Dim Rooms() As Variant Dim Room As Variant Rooms = Array("1号室", "2号室", "3号室") For Each Room In Rooms MsgBox Room Next Room
- 配列RoomsをVariant型で宣言します。
変数RoomをVariant型で宣言します。
For Eachステートメントでは、配列の要素を受ける変数をVariantにしなければいけません。コンパイルエラーが表示されます。
「For Eachを配列で使用する場合は、バリアント型の配列でなければなりません。」 - 配列Roomsに「1号室」「2号室」「3号室」を格納します。
- 配列Roomsの1つ目から順に、変数Roomに格納されます。
1回目処理時:Room=1号室
2回目処理時:Room=2号室
3回目処理時:Room=3号室
そのRoomの内容をMsgBoxでメッセージボックス表示させているので→
→
と、表示されます。 - 配列Roomsにそれ以上要素が存在しないので、ここで For Each の処理は終了します。
■■■スポンサーリンク■■■