Do…Loop ステートメントの使い方
【構文 1】
Do [ While (または Until) condition ]
[ statements ]
Loop
【構文 2】
Do
[ statements ]
Loop [ While (または Until) condition ]
【項目の説明】
- condition ・・・ 真 (True) または偽 (False) を評価する数式、文字列式を指定します(省略可)。
- statements ・・・ 引数( condition )が真 (True) である間( While の場合)、または引数( condition )が真 (True) になるまで( Until の場合)、繰り返し実行される任意の行数のステートメントを記述します(省略可)。
【構文 1】は、statements を実行する前に condition をチェックし、【構文 2】は、statements を実行後に condition をチェックします。よって【構文 2】の場合、最低1回は statements を実行することになります。( ⇒ sample_DoLoop02 の例 )
引数 condition の値が Null 値の場合、引数 condition は、偽 (False) であるとみなされます。
Do…Loop ステートメント から抜け出す別の方法に、Exit Do ステートメント を指定することができます。また、Do…Loop ステートメント はネスト (入れ子) 構造にすることができ、その場合に Exit Do が実行された場合は、その Exit Do を囲んでいる 1 番内側のループから抜け出します。
もし無限ループの状態に陥ってしまった場合は、[ECS] キーを押し続けるか、それで戻らない場合は、[Ctrl] + [Alt] + [Delete] を押して Windows のタスクマネージャーを表示して、Excel を強制終了してください。
Do…Loop ステートメントの使用例
VBAソース例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
'Until を使った例 Sub sample_DoLoop01() Dim num Dim cnt num = 1 cnt = 0 Do Until num > 100 If cnt = 10 Then Exit Do num = num * 6 cnt = cnt + 1 Loop MsgBox "num:" & num & Chr(13) & cnt & "回 ループしました" End Sub 'While を使った例 Sub sample_DoLoop02() Dim cnt1, cnt2 Dim num num = 0 cnt1 = 0 Do While num > 0 num = num - 5 cnt1 = cnt1 + 1 Loop num = 0 cnt2 = 0 Do num = num - 5 cnt2 = cnt2 + 1 Loop While num > 0 MsgBox "cnt1:" & cnt1 & Chr(13) _ & "cnt2:" & cnt2 End Sub '以下の場合は「Exit Do」を使用しないと無限ループになります Sub sample_DoLoop03() Dim cnt Do cnt = cnt + 1 If cnt = 5 Then Exit Do Loop MsgBox cnt End Sub |