
前回指定した回数分の繰り返し処理を設定できるFor Nextステートメントについて解説しました。
【Excel VBA】For Nextステートメントで同じ処理を指定した回数分繰り返す方法 | Excelを制する者は人生を制す ~No Excel No Life~
Excel VBAではFor Nextステートメント以外にも繰り返し設定を行なうためのステートメントは数種類用意されています。
今回は同じ種類のオブジェクトすべてに同じ処理を実行できるFor Each~Nextステートメントについて解説していきます。
なお、オブジェクトについては以下の記事を参考にしてください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
For Each~Nextステートメントの基本構文
1 2 3 |
For Each オブジェクト変数 In コレクション 処理 Next(オブジェクト変数) |
オブジェクト変数
処理の対象となるオブジェクト型の変数を指定します。(Rangeなど)
なお、変数名は任意で決めてOKです。
(変数については以下の記事を参考にしてください。)
【Excel VBA】変数の基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
【Excel VBA】変数のデータ型の種類まとめ | Excelを制する者は人生を制す ~No Excel No Life~
コレクション
処理の対象となる範囲(コレクション=同一種類のオブジェクトの集合体)を指定します。
なお、コレクションについては以下の記事を参考にしてください。
【Excel VBA】コレクションとメンバの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
処理
繰り返しを行なう処理を設定します。
使用例
A1:A10の範囲に1の値を代入していきたいとします。
1 2 3 4 5 6 |
Sub ループ②() Dim myRange As Range For Each myRange In Range("A1:A10") myRange.Value = 1 Next End Sub |
2行目でオブジェクト変数をRange型で設定します。変数名は”myRange”としています。
今回の対象範囲(コレクション)はA1:A10なので3行目のコレクションの部分は「Range(“A1:A10”)」となります。
今回の条件は「A1:A10の範囲に1の値を代入」なので4行目は「myRange.Value = 1」となります。
5行目に「Next」で締めて終了になります。
マクロの動作イメージ
A1~10セルが最初はブランクになっています。
マクロを起動すると、A1~10セルにはそれぞれ1の値が代入されます。
まとめ
今回は値の代入ということで簡単に概要をお伝えしましたが、値以外にも罫線や色などの設定で用するケースもありますね
Ifステートメントと組み合わせると条件付き書式のようなことも可能になります。
For Each~Nextステートメントは若干クセがありますが、使いこなせると同じような条件下におけるオブジェクトに対する処理を効率化できますね。
ぜひ、使いこなせるように試行錯誤してみましょう!