トップ > スキル : アプリケーション > VBA for Excel > 基礎編(ループ処理の操作)

VBA_EXCEL

ループ処理の操作

これまでループに関して、For~Nextステートメントを紹介しました。しかし、条件で分岐させてループさせるには、Do  Loopステートメントを使います。これは、繰り返し回数を指定するというより、一定の条件が満たされるまでの間、もしくは一定の条件が満たされない間、処理を繰り返す処理を行います。
これには4つのパターンがあります。

構文 意味
Do While ~ Loop 条件が真の間は繰り返し実行。
Do ~ Loop While 条件が真の間は繰り返し実行。但し、条件が偽であっても1回だけは処理を行う。
Do Until ~ Loop 条件が偽の間は繰り返し実行。
Do ~ Loop Until 条件が偽の間は繰り返し実行。但し、条件が真であっても1回だけは処理を行う。

では、全部はご紹介しませんが、Do While~LoopとDo Until~Loopの例を取り上げて見ます。
まず、Do While~Loopの例を下に記述しておきます。

このVBAを簡潔に紹介すると以下のようになります。
変数aとbを宣言します(データ型は長整数型)。それぞれの変数の中に、ユーザが入力する初期値と終了値を格納します。次にIFステートメントで、aがb以上もしくはbからaを引いた数は10より大きいときは、メッセージボックスとして「値が不適切です。」と表示させます。この処理を行った場合は、ここでプロシージャを終了させます。
Exit  Subは強制的に処理を終了するための記述

Do   While   ~ Loop構文では、aとbが等しくなければaに1を足したものを再びaに格納し、メッセージとして「aの値は(a)になりました。」と表示させます。これをaとbの値が等しくなるまで繰り返すというプログラムになっています。
つまり、Do   While a< >bが成立している間はLoopまでの処理を実行し、a< >bが成立しなくなったら(aとbが等しくなったら)、繰り返し処理を終えることになります。

では、次に同じような処理をDo  Until ~ Loopで記述してみましょう。以下のとおりです。

内容はほとんど同じです。違うところは、Do  Until a = bのところです。動作は、まったく同じですが、条件がまったく反対になっています。一方が「等しくない間」、片方は「等しくなるまで」という条件となっています。違いが分かりましたか?

Do  ~ Loop WhileとDo  ~ Loop Untilは、条件文が処理の後に来ていますので、必ず条件を指定する前に1回は処理を行い、それから条件文にしたがって繰り返されることになります。上の例では、その前にIFステートメントで処理条件が書いてありますので、Do  ~ Loop WhileやDo  ~ Loop Untilで記述しても結果は同じになります。