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

【VBAスタンダード対策】Do While ・・・ Loop ループの正しい構文と制御構造!

指定した条件が満たされている間、処理を何度も繰り返す Do While ループ。For文とは異なり、「あらかじめ回数が決まっていない処理」に最適な構文ですが、正しいキーワードの組み合わせと、無限ループを防ぐための構造を理解する必要があります。

1. 問題:Do While ループの文法と実行結果

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

Sub LoopTest()
    Dim n As Integer
    n = 1

    Do While n < 5
        n = n + 2
    Loop

    MsgBox n
End Sub

① 3
② 5
③ 7
④ 構文エラー(コンパイルエラー)が発生する

2. 正解:Do While ループの処理フローに関する正解

正解: ② 5

3. 解説:「条件を満たしている間だけ」回る構造

Do While ループを正確に読み解くには、構文の正しいペアと、変数が変化するタイミング(タイムライン)を構造的に追う必要があります。

[ 構文ルールと実行フローの構造 ]

1. ペアは必ず「Do While」と「Loop」
VBAにおいて、Do While で始めたループは、必ず Loop キーワードで閉じます。EndEnd Do、あるいは単に Wend(※古い型)を使うとエラーになります。

2. 処理のトレース(追跡)
・スタート時:n = 1
1回目判定:1 < 5 は成立(True)⇒ 内部へ進む ⇒ n = 1 + 2 = 3
2回目判定:3 < 5 は成立(True)⇒ 内部へ進む ⇒ n = 3 + 2 = 5
3回目判定:5 < 5 は不成立(False!) ⇒ ループを抜ける

★ 結果として、ループを脱出した直後の n の値は 5 になっています。

ここが試験に出る!: スタンダード試験では、「Do Whileの条件式がいつ評価されるか」や「ループを抜けた瞬間の変数の正確な値」がよく問われます。また、内部でカウンタ変数(n = n + 2 など)を更新し忘れると、条件がずっと成立したままになり、マクロがフリーズする「無限ループ」を引き起こす構造上のリスクについても意識しておきましょう。


4. まとめ

「Do While の終わりは Loop。条件が崩れた瞬間に外へ」。この基本フローを脳内にインストールしておけば、セルを上から順番にチェックして「空欄になるまで続ける」といった実務で最もよく使うデータスキャン処理を安全かつ正確に実装できるようになります。



PR