繰り返し処理(Do…Loop ステートメント)
Do…Loop ステートメントの使い方
Do [ While (または Until) condition ]
[ statements ]
Loop
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 |
実行結果
関連記事
-
With ステートメントを使う
With ステートメントを使う With ステートメントを使うことで、1度指定し …
-
条件分岐 If文(If…Then…Else ステートメント)
If…Then…Else ステートメントの使い方 【構文 …
-
プロシージャを呼び出す(Call ステートメント)
プロシージャを呼び出す プロシージャ内から、別のプロシージャを呼び出すには、Ca …
-
繰り返し処理(For Each…Next ステートメント)
For Each…Next ステートメントの使い方 【構文】 For …
-
引数の参照渡し・値渡し( ByRef, ByVal )
引数の「参照渡し」と「値渡し」 「参照渡し」とはプロシージャに引数として変数を渡 …
-
引数を可変にする( ParamArray )
ParamArray キーワード ParamArray キーワードを使用すると任 …
-
プロシージャ内のサブルーチンへ移動(GoTo ステートメント)
GoTo ステートメント GoTo ステートメントは、指定したラベルのサブルーチ …
-
変数やプロシージャのスコープ(適用範囲)
変数やプロシージャのスコープ(適用範囲) 【構文:変数の宣言】 { Dim | …
-
繰り返し処理(While…Wend ステートメント)
While…Wend ステートメントの使い方 【構文】 While …
-
ユーザー定義型変数を使う(Type ステートメント)
Type ステートメントを使う Type ステートメントを使うと1つまたは複数の …