Do Loop文を使った繰り返し処理
VBA を使った繰り返し処理の一つである Do Loop 文の使い方です。 Do Loop 文では条件式が True の間、繰り返し処理を行います。ここでは Excel VBA で Do Loop 文を使った繰り返し処理を行う方法について解説します。
(Last modified: )
Do While...Loopの使い方
Do Loop
文ではいくつかの記述方法がありますが、その中の一つである Do While ... Loop
を使った繰り返し処理の記述方法です。書式は次の通りです。
Do While 条件式 条件式がTrueのときに行う処理 Loop
最初に Do While
のあとに記述された条件式を評価します。条件式が「True」の場合、条件式から Loop
の間の処理を一度実行します。そのあとで再び条件式を評価し、「True」だった場合は再度条件式から Loop
の間の処理を実行します。これを条件式を評価したときに「False」になるまで繰り返します。
注意しなければいけないのは、条件式が「True」のままだと無限に繰り返し処理を実行してしまうので、条件式から Loop
の間で実行される処理の中で、条件式が変化するような処理を行う必要があるという点です。
またこの書式の場合は、まず条件式の評価が行われるので、条件式がいきなり「False」になった場合は繰り返しの処理が一度も実行されずに Do Loop
文の次へ処理が移ることもあります。
次のサンプルではセル B2 に入力された数値から 5 を繰り返し減算していき、 5 以下になるまで繰り返します。
Option Explicit Sub テスト() Dim num As Integer num = Range("B2").Value Do While num > 5 Debug.Print ("数値 = " & num) num = num - 5 Loop End Sub
今回のサンプルでは繰り返し処理を行う条件式が num > 5
となっています。この条件式を評価し「True」だった場合にイミディエイトウィンドウに数値を出力したあとで数値から 5 を減算します。そのあと再び条件式を評価し、「False」になるまで繰り返します。この 5 を減算する処理がなければ、条件式はずっと「True」となるため、この繰り返し処理が終わることはありません。
それでは実際にプログラムを実行してみます。まずワークシートの B2 セルに 16 と入力しました。
先ほどのプログラムを実行します。
イミディエイトウィンドウに次のように出力されました。
次にワークシートの B2 セルに 3 を入力してから、再度プログラムを実行してみました。
今回は Do While ... Loop
文で最初に条件式を評価したときに「False」となるため、繰り返し処理は一度も実行されずイミディエイトウィンドウには何も出力されませんでした。
Do...Loop Whileの使い方
次に Do...Loop While
を使った繰り返し処理の記述方法です。書式は次の通りです。
Do 条件式がTrueのときに行う処理 Loop While 条件式
この書式ではまず Do
から Loop
までの処理を一度実行します。そのあとで While
の値に記述された条件式を評価します。条件式が「True」だった場合は最初に戻って再び Do
から Loop
までの処理を実行します。これを条件式を評価したときに「False」になるまで繰り返します。
注意しなければいけないのは、条件式が「True」のままだと無限に繰り返し処理を実行してしまうので、 Do
から Loop
の間で実行される処理の中で、条件式が変化するような処理を行う必要があるという点です。
>Do...Loop While
文は Do While...Loop
文と基本的に同じですが、条件式が最後に記述されているため必ず一度は繰り返し処理の部分を実行する点が異なります。必ず一度は実行させたい場合にこの書式を使用してください。
次のサンプルではセル B2 に入力された数値から 5 を繰り返し減算していき、 5 以下になるまで繰り返します。
Option Explicit Sub テスト() Dim num As Integer num = Range("B2").Value Do Debug.Print ("数値 = " & num) num = num - 5 Loop While num > 5 End Sub
それでは実際にプログラムを実行してみます。まずワークシートの B2 セルに 16 と入力しました。
先ほどのプログラムを実行します。
イミディエイトウィンドウに次のように出力されました。
次にワークシートの B2 セルに 3 を入力してから、再度プログラムを実行してみました。
今回は Do...Loop While
文で最初に条件式を評価したときに「False」となりますが、条件式を評価する前に必ず一度は繰り返し処理が実行されるためイミディエイトウィンドウには次のように出力されました。
Do Until...Loopの使い方
Do While ... Loop
では条件式が「True」の間繰り返し処理が実行されますが、逆に条件式が「False」の間繰り返し処理を実行することもできます。書式は次の通りです。
Do Until 条件式 条件式がFalseのときに行う処理 Loop
最初に Do Until
のあとに記述された条件式を評価します。条件式が「False」の場合、条件式から Loop
の間の処理を一度実行します。そのあとで再び条件式を評価し、「False」だった場合は再度条件式から Loop
の間の処理を実行します。これを条件式を評価したときに「True」になるまで繰り返します。
Do Until ... Loop
を使うことで条件式が「False」の間繰り返し処理を実行することができますが、論理演算子の Not
を使うことで Do While ... Loop
でも同じことができます。
Do While Not 条件式 条件式がFalseのときに行う処理 Loop
条件式が「False」の場合、 Not
演算子によって「True」となります。結果的に条件式が「False」の間繰り返し処理が行われることになります。
このようにあえて Do Until ... Loop
を使用する必要はありませんが、条件式が「False」間繰り返し処理を行うことを明確にしたい場合などに利用されてみてください。
同じように Do...Loop While
の代わりに Do...Loop Until
を使用することもできます。
Do 条件式がFalseのときに行う処理 Loop Until 条件式
Do
から Loop
までの処理を一度実行します。そのあとで Until
の値に記述された条件式を評価します。条件式が「False」だった場合は最初に戻って再び Do
から Loop
までの処理を実行します。これを条件式を評価したときに「True」になるまで繰り返します。
-- --
Excel VBA で Do Loop 文を使った繰り返し処理を行う方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。