【VBA】Do While...Loopの使い方!条件を満たす間処理を繰り返す基本構造
VBAで繰り返し処理を行う際、For...Next と並んでよく使われるのが Do While...Loop です。「変数が10未満の間」や「セルが空欄でない間」といった、柔軟な条件指定ができるため、実務でのデータ処理において非常に重宝します。
1. 基本文法:Do While...Loop
ループの開始時に条件を判定し、その条件が True(真) である間、中の処理を繰り返し実行します。条件が False になった瞬間にループを抜けます。
Do While 条件式
' 繰り返したい処理
Loop
2. 実践サンプル:1から10までカウントアップ
ポイント:ループ内で条件に関わる変数を更新する
以下の例では、変数 i が10になるまで処理を繰り返します。ループの中で i = i + 1 を忘れると、条件がいつまでも満たされたままになり、無限ループに陥るため注意が必要です。
Dim i As Integer
i = 0 ' 初期化
' i が 10 より小さい間は繰り返す
Do While i < 10
i = i + 1
Debug.Print i
Loop
End Sub
3. 実行結果
イミディエイトウィンドウに、1から10までの数値が順番に出力されます。
2
3
4
5
6
7
8
9
10
4. エンジニアの視点:For文との使い分けと「無限ループ」対策
1. 使い分けの基準: 回数が決まっている時は For...Next、回数が決まっておらず「データが終わるまで」のような動的な条件の時は Do While を使います。特に、外部ファイル(CSVやDBのレコード)を1行ずつ読み込むような「いけいけ」な処理には Do While が最適です。
2. 無限ループの回避: 条件式が常に True になってしまうと、Excelがフリーズします。もし止まらなくなったら [Ctrl] + [Pause/Break] キーで中断しましょう。開発中は、念のためループ内に DoEvents を入れておくと、強制終了しやすくなるのでおすすめです。
3. 条件判定のタイミング: Do While は最初に判定しますが、Loop While と書くと最後に判定(一度は必ず実行)するようになります。このあたりの制御を使いこなせるようになると、IT技術者としてより緻密なロジックが組めるようになります。
5. まとめ
「条件が整っている間、ひたすら回す」。このシンプルな考え方が、複雑な業務自動化を支えます。変数の更新タイミングと条件式の関係をしっかりマスターして、自由自在にループを操れるようになりましょう。