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

【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 を忘れると、条件がいつまでも満たされたままになり、無限ループに陥るため注意が必要です。

Sub MySub()
  Dim i As Integer
  
  i = 0  ' 初期化
  
  ' i が 10 より小さい間は繰り返す
  Do While i < 10
    i = i + 1
    Debug.Print i
  Loop
End Sub

3. 実行結果

イミディエイトウィンドウに、1から10までの数値が順番に出力されます。

1
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. まとめ

「条件が整っている間、ひたすら回す」。このシンプルな考え方が、複雑な業務自動化を支えます。変数の更新タイミングと条件式の関係をしっかりマスターして、自由自在にループを操れるようになりましょう。

PR