
前回同じ種類のオブジェクトすべてに同じ処理を実行できるFor Each~Nextステートメントについて解説しました。
【Excel VBA】For Each~Nextステートメントで同じ種類のオブジェクトすべてに同じ処理を実行する方法 | Excelを制する者は人生を制す ~No Excel No Life~
Excel VBAには他にも繰り返し処理を行なうステートメントが用意されています。
今回は指定した条件を満たした時に同じ処理を繰り返すDo While~Loopステートメントについて解説していきます。
Do While~Loopステートメントの基本構文
1 2 3 | Do While 条件式 処理 Loop |
条件式
繰り返しを行なう条件を設定します。
Do While~Loopステートメントはこの条件式を満たす場合(真の場合)のみ繰り返し処理を実行します。
偽の場合は「ループを抜ける(繰り返し処理が停止)」ということになります。
処理
繰り返しを行なう処理を設定します。
使用例
For Nextステートメントの記事と同様にA列に順番に1から10までの値をA1セルから代入していきたいとします。
【Excel VBA】For Nextステートメントで同じ処理を指定した回数分繰り返す方法 | Excelを制する者は人生を制す ~No Excel No Life~
1 2 3 4 5 6 7 8 | Sub ループ③() Dim i As Integer i = 1 Do While i < 11 Cells(i, 1).Value = i i = i + 1 Loop End Sub |
2行目でカウンタ変数をInteger型で設定します。変数名は”i”としています。
今回の開始値はA1セルから10回繰り返し処理を行なうので3行目の条件式は変数の値が11より小さいことを条件としています。
今回の処理は「A列に順番に1から10までの値をA1セルから代入」なので4行目は「Cells(i, 1).Value = i」となります。
5行目で変数の値を繰り返し処理の回数に伴い1ずつ加算となるように「i = i + 1」としています。
6行目に「Loop」で締めて終了になります。
マクロの動作イメージ
A1~10セルが最初はブランクになっています。
マクロを起動すると、A1~10セルにはそれぞれ1~10の値が代入されます。(行数と同じ数)
まとめ
同じ繰り返し処理をFor NextステートメントとDo While~Loopステートメントで設定できましたが、Do While~Loopステートメントの方は条件を満たしている間はずっと繰り返し処理が行わせることができるので、繰り返しの条件によってはよりコードが簡潔に済ませることができるケースがあります。
それぞれのステートメントの特性を理解しながら、ケースによってどちらが最適なのかを考えながらコーディングしてみてくださいね。