【用語集に記載の内容について】
用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。
また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。
【コードをコピーして実行する場合の注意】
文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。
Do…LoopステートメントのUntilキーワード
名称 | Do…LoopステートメントのUntilキーワード |
---|---|
説明 | 条件が正しくない間は処理を繰り返す動作を指定します。 したがって、Do…Loopステートメントの条件にUntilキーワードを指定すると、条件がFalseの間は処理を繰り返します。 |
書式 |
【繰り返しの前で条件を判定する】 Do Until 条件 処理 Loop 【繰り返しの後で条件を判定する】 Do 処理 Loop Until 条件 |
コード例① |
【繰り返しの前で条件を判定】 Sub Macro1() Dim i As Long i = 1 Do Until i > 3 MsgBox i i = i + 1 Loop End Sub 「Until i > 3」は、「i > 3」がFalseの間は処理を繰り返します。 Do…Loopステートメントは以下のように処理されます。 i = 1→「1 > 3」でFalse→ 「1」のメッセージボックスを表示 i = 2→「2 > 3」でFalse→ 「2」のメッセージボックスを表示 i = 3→「3 > 3」でFalse→ 「3」のメッセージボックスを表示 i = 4→「4 > 3」でTrue→ 繰り返し終了 |
コード例② |
【繰り返しの後で条件を判定】 Sub Macro2() Dim i As Long i = 1 Do MsgBox i i = i + 1 Loop Until i > 3 End Sub 繰り返しの後で条件判定を行うため、Do…Loop内の処理は必ず1回実行されます。 「Until i > 3」は、「i > 3」がFalseの間は処理を繰り返します。 Do…Loopステートメントは以下のように処理されます。 i = 1→「1」のメッセージボックスを表示 i = 2→「2 > 3」でFalse→ 「2」のメッセージボックスを表示 i = 3→「3 > 3」でFalse→ 「3」のメッセージボックスを表示 i = 4→「4 > 3」でTrue→ 繰り返し終了 |
コード例③ |
【前判定と後判定の比較】 Sub Macro3() Dim i As Long i = 1 Do Until i < 3 MsgBox i i = i + 1 Loop End Sub Sub Macro4() Dim i As Long i = 1 Do MsgBox i i = i + 1 Loop Until i < 3 End Sub Macro3とMacro4の「Until i < 3」は、「i < 3」がFalseの間は処理を繰り返します。 Macro3は、繰り返しの前で条件を判定しています。 Do…Loopステートメントは以下のように処理されます。 i = 1→ 「1 < 3」でTrue→ 繰り返し終了 Macro4は、繰り返しの後で条件を判定をしているため、Do…Loop内の処理は必ず1回実行されます。 Do…Loopステートメントは以下のように処理されます。 i = 1→ 「1」のメッセージボックスを表示 i = 2→ 「2 < 3」でTrue→ 繰り返し終了 |
コード例④ |
【無限ループ】 Sub Macro5() Dim i As Long i = 2 Do Debug.Print i i = i + 1 Loop Until i < 3 End Sub 繰り返しの後で条件の判定をしているため、Do…Loop内の処理は、必ず1回実行されます。 また、「Until i < 3」は、「i < 3」がFalseの間は処理を繰り返します。 「Until i < 3」は、iの値が2以下の場合、Trueになりますが、1回目の条件判定時のiの値は3であり、以降1ずつ増えていくので、無限ループとなります。 「Debug.Print i」は、イミディエイトウインドウに値を主力します。 Do…Loopステートメントは、以下のように無限ループとなります。 i = 2→ 「2」を出力 i = 3→ 「3 < 3」でFalse→ 「3」を出力 i = 4→ 「4 < 3」でFalse→ 「4」を出力 : : : |
カテゴリ | スタンダード |