
vbaのdowhileとは?dowhileの使い方
vbaで処理を実行し続ける方法は、forステートメント、do whileステートメント、do Untilステートメントなどがあります。
ここでは、”do whileステートメント”について、forステートメントとの使い分けも含めて説明していきます。
目次
1.do whileについて
1-1.vbaにおけるdo while
do whileステートメントは、繰り返し処理を実行させたい場合に使用する制御構文です。
forステートメントとは違い、繰り返す回数が決まってない場合でも使用できます。
1-2.使用上の注意
繰り返す回数が決まってないため、条件次第では、永久に処理を実行し続ける”無限ループ”に陥ることがあります。
使用する際は、指定した条件に終わりがあることを確認しましょう。無限ループさせてしまった場合は、[ESC]キーをクリックして処理を中断させてください。
2.do whileの使い方
2-1.do while loopとdo loop whileについて
- do while loop
do while Loopは条件式を判定してから処理が実行されます。以下は基本の書式になります。
Do while 条件式
処理
Loop
<例>
ループ処理のたびに1ずつ加算し、5以上になるまで繰り返すプログラム。
Sub sample() Dim a As Integer a = 1 Do While a < 5 Debug.Print a & "回目。" a = a + 1 Loop End sub
- do loop while
do while Loopでは最初に条件式を判定するため、条件を満たさなければループせずに処理が終了することもあります。最初の1回だけでも処理させたいときには、do loop whileを使いましょう。以下は基本の書式になります。
Do
処理
Loop while 条件式
<例>
1から10のランダムな数を計算して、5が出るまで繰り返すプログラム。
※5が出るまで処理がループします。
Sub sample() Dim a As Integer Do num = Int(Rnd * 10) + 1 Debug.Print a & "が出ました。" Loop While a <> 5 End sub
2-2.forステートメントとの使い分け
どちらも処理を繰り返すときに用いられる制御構文ですが、以下の様に使い分けることが出来ます。繰り返し処理させたい回数が状況に応じて変わる場合はdo whileステートメント。繰り返し処理させたい回数が決まっている場合はforステートメント。
例えばこんなときは、do whileステートメント
- 特定の値や文字が入力されるまで処理を続ける様なプログラム
- 繰り返し処理の判定条件が乱数の様な変化する値に依存するプログラム
例えばこんなときは、forステートメント
- 繰り返し回数が処理の結果に依存することが無いプログラム
- 指定した終了条件に達すれば処理を終了する様なプログラム
3.応用編
3-1.ループを途中でスキップさせたいとき
ループを途中でスキップさせるには、GoToステートメントを使います。GoToステートメントの”ラベル”をdo whileステートメントのループ内の先頭に指定します。GoToステートメントに到達すると以降の処理は実行されずに、ループの最初(ラベルの位置)へ移動します。
<例>
繰り返し回数が3になると処理をスキップするプログラム
Sub sample() Dim i As Integer, str As String Do While i < 5 L1: ‘←GoToステートメントのラベル i = i + 1 If i = 3 Then GoTo L1 End If str = str & i & "回目です" & vbCrLf Loop str = "処理が終了しました" MsgBox str End sub
3-2.ループを抜けたいとき
ループを途中で抜けるには、Exitステートメントを使います。処理がExitステートメントに到達すると、ループ内のそれ以降の処理は実行されずにループを抜けます。
<例>
繰り返し回数が5になるとループを抜けるプログラム
Sub sample() Dim i As Integer, str As String Do While i < 10 i = i + 1 If i > 5 Then Exit Do End If str = str & i & "回目です" & vbCrLf Loop str = "5回目で終了します" MsgBox str End sub
繰り返し処理を実行させる方法として、do whileステートメントを紹介しましたが、冒頭にも記載した通り、繰り返し実行させる方法は他にもあります。状況に合わせて使い分けるようにしてください。
コメント