【VBA】Do Loopの使い方【For文との違いまで解説】

本記事では『Do Loop』ステートメントについて解説していきます。

 

「Do Loop」はループ処理を行うときに用いるステートメントです。

「For~Next」と同様にループ処理で、このステートメントよりも使用頻度は低いです。

 

ですが、処理内容によってはDo Loopのほうが適している場合があるので、ぜひ覚えておきましょう。

スポンサーリンク



はじめに:「For~Next」ステートメントとの違いとは?

Do Loopを使う際に「For使えばよくね?」という疑問が出てきます。

なので、それぞれの特徴をおさえておくとよいでしょう。

『For~Next』はあらかじめカウンター変数の数値により反復を制御します。

つまり、「〇〇(数値)から△△(数値)まで繰り返したい」というときに使うわけです。

 

それに対して、『Do~Loop』は条件によって反復を行うことができます。

つまり、「〇〇(数値)未満まで繰り返したい」などの場合に使うわけです。

 

そして、具体的な2つの書き方は下のような感じになっています。

Do While i <= 10 (iが10以下の場合は処理を繰り返す)

For i to 10 (iから10まで処理を繰り返す)

上の例の場合、どっちも得られる結果は同じですが記述の仕方が変わる。

 

Do Loopの記述方法

次にDo Loopの記述の仕方について解説します。

記述の仕方は「ループの前」「ループの後」の2つの書き方があります。

 

また、注意点もあるので必ず覚えておきましょう。

条件をループ”前”に設定

「Do Loop」の記述の仕方は下の通りです。

Do [{ While | Until } condition ]

[statements]

Loop

 

基本的には「Do」の後に「While」か「Until」を使って条件を設定します。

・While:conditionが”True”の場合、処理statementsを繰り返す。

・Unitil:conditionが”False”の場合、処理statementsを繰り返す。

 逆の判定になったら、「Loop」キーワードの後の処理に移る。

 

正直、どちらを使っても同じことができるので、コード的に見やすくなるように2つを使い分けると良いでしょう。

 

条件をループ”後”に設定

ちなみに、ループの後に条件判断することもできます

Do

[statements]

Loop [{ While | Until } condition ]

 

このループ後に条件設定をする場合は”必ず1度は処理statementsが実行される”ということを覚えておきましょう。

 

【注意】”無限ループ”に気を付ける

無限ループとは

Do Loopは使用する際には”必ずループが終了するようにコードを組む必要”があります。

そして、条件を満たさずに永久に処理を繰り返すことを”無限ループ”と言います。

 

実はDo Loopは下のように「While」「Until」キーワードと条件式conditionを省略することも可能です。

しかし、この場合は処理を終わらせる条件がないので無限ループになってしまいます。

Do 

[statements]

Loop

 

もしも、条件を設けずに実行してしまった場合素早くキーボードの「Esc」キーを押す、処理停止ができない場合はエクセルのアプリケーションのタスクを終了させるしかありません。

 

条件を設定しないときとは?

Do Loopで条件を設けない場合は、ループ内でループを抜ける条件を設ける必要があります。

ほとんどの場合は、ループ内に「If~Then~Elseステートメント」を設け、特定の条件でExitステートメントを用いてループを抜けるようにします。

【VBA】Exitステートメントの使用方法【参考コード有り】
Exitステートメントは”ループを抜けたり、プロシージャーを終了させる”ときに記述します。 そして、ループ内の任意の場所に記述できるので、柔軟な制御ができたりします。 Exitステートメントの種類 Exitステートメントには5種類...

 

Do Loopの使用例

下は条件を「iが10未満のとき」にループして「A1~A9のセルに変数カウント値(i)を入れていく」という処理を行うコードになります。

 

上の処理結果はFor文でもIfを使って条件を設けることで得ることができます。

だから、Do Loopの活躍場面が少ないといえます。

でも、この場合はDo Loopを使ったほうがスマートに書けますよね。

 

スポンサーリンク

コメント