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