忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【VBAスタンダード対策】Do Until ・・・ Loop の終了条件と制御構造を攻略!

Do While が「条件を満たしている間」ループを続けるのに対し、Do Until「条件を満たすまで(満たした瞬間に終了)」ループを続ける構造を持っています。この2つの「条件の判定基準の違い」を完璧に整理しましょう。

1. 問題:Do Until ループの処理フローと実行結果

【 問題 】 下記のコードを実行して UntilTest プロシージャを呼び出した際、メッセージボックスに表示される数値はいくつでしょうか?

Sub UntilTest()
    Dim n As Integer
    n = 1

    Do Until n >= 5
        n = n + 2
    Loop

    MsgBox n
End Sub

① 3
② 5
③ 7
④ 条件が最初から満たされていないため、ループは1回も回らず 1 と表示される

2. 正解:Do Until ループの条件判定に関する正解

正解: ② 5

3. 解説:「条件が成立(True)したら脱出」という構造

Do Until を読み解く最大の鍵は、「条件式が True になった瞬間に、ループの処理を止めて外へ抜ける」という判定構造にあります。

[ Do Until の実行フロー構造 ]

条件式:n >= 5 (nが5以上になったら終了!)

・スタート時:n = 1
1回目判定:1 >= 5 は不成立(False)⇒ まだ終了しない(実行!) ⇒ n = 1 + 2 = 3
2回目判定:3 >= 5 は不成立(False)⇒ まだ終了しない(実行!) ⇒ n = 3 + 2 = 5
3回目判定:5 >= 5 は成立(True!)ここでループ終了(脱出!)

★ したがって、ループを抜けた直後の n の値は 5 になります。

ここが試験に出る!: スタンダード試験では、「同じ処理を Do WhileDo Until で書き換える」という問題が頻出します。今回のコードを While で書くなら、条件式は真逆の Do While n < 5 になります。「Until の条件式は、ループを抜けたい時の最終ゴールを書く」という構造の違いを絶対に忘れないでください。


4. まとめ

「Untilは条件がTrueになったら終わり(ゴール)。それまでは回り続ける」。この構造さえ押さえておけば、「セルが空白(="")になるまで処理を続ける」といった実務の大量データ処理も、終了条件を迷わずに一発で記述できるようになります。


PR