
前回指定した条件を満たした時に同じ処理を繰り返すDo While~Loopステートメントについて解説しました。
【Excel VBA】Do While~Loopステートメントで条件を満たした時に同じ処理を繰り返す方法 | Excelを制する者は人生を制す ~No Excel No Life~
Do While~Loopステートメントと類似の繰り返し処理としてDo Until~Loopステートメントがあります。
違いは条件式がDo While~Loopステートメントが条件式を満たしている間(条件に対してTrue)の場合に処理を繰り返すのに対し、Do Until~Loopステートメントは反対に条件式を満たさない間(条件に対してFalse)の場合に処理を繰り返します。
今回は指定した条件を満たさない時に同じ処理を繰り返すDo Until~Loopステートメントについて解説していきます。
Do Until~Loopステートメントの基本構文
1 2 3 |
Do Until 条件式 処理 Loop |
条件式
繰り返しを行なう条件を設定します。
Do Until~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 Until 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の値が代入されます。(行数と同じ数)
まとめ
今回Do While~Loopステートメントと同じ内容をDo Until~Loopステートメントでも設定しました。
実際に活用する場合、ループの条件式をどちらが組みやすいか(考えやすいか)で使い分けられると理想ですね。
ただ、シンプルな条件式なら必ずどちらも設定できますので、最初は使い分けを意識しすぎず、どちらか一方から覚えてしまうことがおすすめです。