【Excel VBA】Do Until~Loopステートメントで条件を満たさない時に同じ処理を繰り返す方法

【Excel VBA】Do Until~Loopステートメントで条件を満たさない時に同じ処理を繰り返す方法

前回指定した条件を満たした時に同じ処理を繰り返す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ステートメントの基本構文

条件式

繰り返しを行なう条件を設定します。

Do Until~Loopステートメントはこの条件式を満たさない場合(偽の場合)のみ繰り返し処理を実行します。

真の場合は「ループを抜ける(繰り返し処理が停止)」ということになります。

処理

繰り返しを行なう処理を設定します。

使用例

For Nextステートメントの記事と同様にA列に順番に1から10までの値をA1セルから代入していきたいとします。

【Excel VBA】For Nextステートメントで同じ処理を指定した回数分繰り返す方法 | Excelを制する者は人生を制す ~No Excel No Life~

Do Until~Loopステートメント①

2行目でカウンタ変数をInteger型で設定します。変数名は"i"としています。

今回の開始値はA1セルから10回繰り返し処理を行なうので3行目の条件式は変数の値が11と等しいことを条件としています。

今回の処理は「A列に順番に1から10までの値をA1セルから代入」なので4行目は「Cells(i, 1).Value = i」となります。

5行目で変数の値を繰り返し処理の回数に伴い1ずつ加算となるように「i = i + 1」としています。

6行目に「Loop」で締めて終了になります。

マクロの動作イメージ

For Nextステートメント②

A1~10セルが最初はブランクになっています。

For Nextステートメント③

マクロを起動すると、A1~10セルにはそれぞれ1~10の値が代入されます。(行数と同じ数)

まとめ

今回Do While~Loopステートメントと同じ内容をDo Until~Loopステートメントでも設定しました。

実際に活用する場合、ループの条件式をどちらが組みやすいか(考えやすいか)で使い分けられると理想ですね。

ただ、シンプルな条件式なら必ずどちらも設定できますので、最初は使い分けを意識しすぎず、どちらか一方から覚えてしまうことがおすすめです。