第59回.コレクション処理(For Each)
For Each は、コレクションの各要素に対して繰り返し処理を実行します、
コレクションはオブジェクトの集まりですので、
For Each は、コレクションの中から、個別のオブジェクトを取り出して処理する場合に使用します。
コレクションの全ての要素に対し処理を行うと、ループは終了します。
※For Eachでは、配列も扱えますが、ここではコレクションについてのみ説明します。
For Each の構文
[statements]
[Exit For]
[statements]
Next [element]
element | 必ず指定します。 コレクションの各要素を繰り返す変数を指定します。引数 element にはバリアント型 (Variant) 変数、総称オブジェクト型変数、または任意の固有オブジェクト型のオブジェクトの変数を指定できます。 |
group | 必ず指定します。 オブジェクト コレクション名を指定します。 |
statements | 省略可能です。 引数 group の各メンバに対して実行するステートメントを指定します。 |
上記は、ヘルプからの抜粋です。
elementのデータ型について
Variant(バリアント型) > Object(総称オブジェクト型) > 固有オブジェクト型
ということです。
固有オブジェクト型が不明な場合は、総称オブジェクト型やバリアント型でも良いのですが、
そもそも、コレクション名は解っている訳ですから、
コレクション名の最後のsを取れば、それで通常は、固有オブジェクト型になります。
Dim 変数 As ○○○
For Each 変数 In ○○○s
・・・
Next 変数
○○○がオブジェクト、○○○sがコレクションです。
Exit For
For Each 変数 In コレクション
・・・
If 終了すべき条件 Then
Exit For
End If
・・・
Next
このような使い方になります。
使用例
Dim ws As Worksheet For Each ws In Worksheets ws.PrintPreview Next ws |
これで、全シートが印刷プレビューされます。
(印刷プレビューについては、後々説明します。)
これは、For Eachを使わずに書くと、
Dim i As Integer For i = 1 To Worksheets.Count Worksheets(i).PrintPreview Next i |
このようになります。
.Countは、コレクションの要素数です。
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,・・・
の順に処理されます。
セルは縦横の2次元なので、For Eachには、あまり向きません。
例えば、とりあえず、横・縦の順でも問題なかったとしても、
その後に、縦・横の順に変更する必要が出てきたときに困る事になります。
同じテーマ「マクロVBA入門」の記事
第56回.Rangeオブジェクト
第57回.Applicationのプロパティ
第58回.コレクションとは
第60回.エラー処理(On Error)
第61回.「On Error Go To」と「Exit Sub」
第62回.「On Error Resume Next」とErrオブジェクト
第63回.ブックを開く(Open)
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
新着記事 ・・・新着記事一覧を見る
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)
ファイルの操作|MOS VBAエキスパート対策(3月14日)
ユーザーフォームの各種イベント|Excelユーザーフォーム(3月13日)
レジストリの操作|MOS VBAエキスパート対策(3月12日)
変数と配列|MOS VBAエキスパート対策(3月12日)
Colorプロパティの設定値一覧|VBA技術解説(3月12日)
APIとOLEオートメーション|MOS VBAエキスパート対策(3月11日)
エラーへの対処|MOS VBAエキスパート対策(3月10日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.定数と型宣言文字(Const)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.繰り返し処理(For Next)|ExcelマクロVBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。