第59回.コレクション処理(For Each)
For Each は、コレクションの各要素に対して繰り返し処理を実行します。
For Each は、
コレクションの中から、個々のオブジェクトを取り出して処理する場合に使用します。
コレクションの全ての要素に対しての処理が終わるとループは終了します。
For Each の構文
[statements]
[Exit For]
[statements]
Next [element]
| element | 必ず指定します。 コレクションの各要素を繰り返す変数を指定します。 引数 element にはバリアント型変数、総称オブジェクト型変数、または固有オブジェクト型のオブジェクト変数を指定できます。 |
| group | 必ず指定します。 オブジェクト コレクション名または配列名を指定します。 |
| statements | 省略可能です。 引数 group の各メンバに対して実行するステートメントを指定します。 |
elementのデータ型について
Variant(バリアント型) > Object(総称オブジェクト型) > 固有オブジェクト型
ということになります。
そもそも、コレクション名は解っている訳ですから、
コレクション名の最後のsを取れば、通常はそれで固有オブジェクト型になります。
For Each 変数 In ○○○s
・・・
Next 変数
※全てのオブジェクト・コレクションについてこの規則が当てはまるわけではありません。
あくまで、このような命名規則が多いというこです。
Exit For
For Each 変数 In コレクション
・・・
If 終了すべき条件 Then
Exit
For
End If
・・・
Next
このような使い方になります。
For Each の使用例
Dim ws As Worksheet
For Each ws In
Worksheets
ws.PrintPreview
Next ws
これで、全シートが印刷プレビューされます。
(印刷プレビューについては、後々説明します。)
Dim i As Integer
For i = 1 To Worksheets.Count
Worksheets(i).PrintPreview
Next
i
このようになります。
.Countは、コレクションの要素数です。
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Name
Next
マクロの書かれているブックのすべてのワークシートをイミィディエイト ウインドウに出力しています。
RangeオブジェクトのFor Each
Dim MyRange As Range
Dim i As Long
i = 1
For Each MyRange In
Range("A1:B5")
MyRange = i
i = i +
1
Next
これを実行してみれば解りますが、
A1,B1,A2,B2,・・・
このような順に処理されます。
列→行
この順で取得されます。
例えば、とりあえず列→行の順で問題なかったとしても、
その後に、行→列の順に変更する必要が出てきたときに困る事になります。
従って、このような処理順を気にする必要がないときにのみ使用してください。
For Each サイト内の参考ページ
同じテーマ「マクロVBA入門」の記事
第56回.Rangeオブジェクト(RangeとCells)
第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
第58回.コレクションとは(Collection)
第59回.コレクション処理(For Each)
第60回.エラー処理(On Error)
第61回.「On Error GoTo」と「Exit Sub」
第62回.「On Error Resume Next」とErrオブジェクト
第63回.ブックを開く(Open,Add)
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
新着記事NEW ・・・新着記事一覧を見る
Excelの新機能「リストとセル内配列」:1つのセルに複数の値|エクセル入門(2026-09-28)
Excel関数クロスワード(2026-09-26)
Excelショートカットキークイズ(2026-09-23)
Excel関数名クイズ(2026-09-21)
気ままに一手|リレー将棋(2026-09-20)
ITエンジニアがトラブルを避けるための法律・契約入門|エクセル雑感(2026-09-18)
ITエンジニアなら知らないと恥ずかしい数学20選|エクセル雑感(2026-09-17)
ITエンジニアのための税金と社会保険のお話|エクセル雑感(2026-09-15)
ITエンジニアのための経理・会計・簿記入門|エクセル雑感(2026-09-12)
「Python in Excel」入門:コードを読むための基礎知識|エクセル関数応用(2026-09-10)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.Excelショートカットキー一覧|Excelリファレンス
5.RangeとCellsの使い方|VBA入門
6.FILTER関数(範囲をフィルター処理)|エクセル入門
7.マクロとは?VBAとは?VBAでできること|VBA入門
8.繰り返し処理(For Next)|VBA入門
9.メッセージボックス(MsgBox関数)|VBA入門
10.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.
