Do Whileステートメントによる繰り返し

Do Whileステートメントは、「条件を満たしている間」同じ処理を行うステートメントです。繰り返し処理という点ではFor〜Nextステートメントと同じ繰り返し処理を行いますが、形式が若干違います。今回はDo Whileステートメントについて学んでいきましょう!

Do Whileステートメントの基本形1

Do Whileステートメントの基本形は、以下のようになっています。

Do While〜Loopステートメント構文

「条件式が成立している間」だけ、Do WhileとLoopに囲まれたブロックの処理が繰り返し実行されます。フローチャートで流れを確認してみましょう。

Do While〜Loopステートメント

条件式が成立(True)している間は、繰り返し処理が実行されるという流れがわかっていただけたでしょうか?簡単なサンプルコードを実際に動かして確認してみましょう。

このSubプロシージャを実行すると、「合言葉を入力してください」というダイアログボックスが表示されます。「合言葉 <> “VBA”」の部分が合言葉を判定している条件式です。正しい合言葉(VBA)が入力されるまで、何回でもダイアログボックスが表示されます。

正しい合言葉が入力されると、ダイアログボックスが消えてアラートダイアログが表示されます。

Do While〜Loopステートメントの基本形2

Do〜Loop Whileステートメント構文

次はDo Whileステートメントの基本形2です。基本形1と違うのは、条件判定が後に来ているということです。基本形1の場合は1回も処理が実行されずにループが終了するということもありますが、基本形2の場合は「必ず1回」は処理が実行されます。

この基本形2ですが、覚える必要はないと思っています(紹介しておいて言うのもなんですが)。基本形1を使えば、基本形2と同じ処理が実現できるからです。

無限ループに注意!

Do While〜Loopステートメントには、注意すべき点があります。条件を満たしている間は処理が処理が実行されるということは、条件が満たしている場合は処理が「永遠」に実行されるということです。

メビウスの輪

処理が無限に実行されるループのことを一般的に「無限ループ」と言います。無限ループに入ってしまったプログラムは終了することがありません。上のフローチャートで言うと、条件式の判定と実行部分の矢印が永遠にグルグル回転しているという状況です。

無限ループに陥らないようにするには、どこかのタイミングで条件式を満たさないようにするか、Exit Whileステートメントを使ってループを脱出させるなど、何らかの「停止装置」を組み込む必要があります。無限ループはプログラミングに慣れた人でも時々やってしまうミスです。

上の例では、無限ループを脱出させるために変数を用いています。変数が100に達したら、Exit Doステートメントでループを脱出します。

スポンサーリンク