方法: 複数のステートメントを繰り返し実行する (Visual Basic)
ループ構造を使用すると、ステートメント ブロックを繰り返し実行できます。 ループは、条件の Boolean 値にしたがって不特定の回数実行することも、特別な変数で制御される指定回数だけ実行することもできます。
不特定回数ループを実行する
条件が True である限り一連のステートメントを実行するには
While...End While ステートメント (Visual Basic) を使用してループの繰り返しを制御する条件を指定します。 次の例では、number が 6 より大きい間ステートメント ブロックを繰り返します。
Sub checkWhile() Dim counter As Integer = 0 Dim number As Integer = 10 While number > 6 number -= 1 counter += 1 End While MsgBox("The loop ran " & counter & " times.") End Sub
While ステートメントは、ループを開始する前に必ず条件を確認します。 number を 10 ではなく 6 に初期化すると、ループ内のステートメントは実行されません。
条件が True である間一連のステートメントを実行するには
Do...Loop ステートメント (Visual Basic) を使用し、ループの先頭か最後にテスト条件を指定します。 While キーワードを指定する場所によって、条件をテストする場所が決まります。 次に例を示します。
Sub checkWhileFirst() Dim counter As Integer = 0 Dim number As Integer = 10 Do While number > 6 number -= 1 counter += 1 Loop MsgBox("The loop ran " & counter & " times.") End Sub Sub checkWhileLast() Dim counter As Integer = 0 Dim number As Integer = 5 Do number -= 1 counter += 1 Loop While number > 6 MsgBox("The loop ran " & counter & " times.") End Sub
上の例では、最初の Do ループは 4 回実行され、2 番目の Do ループは 1 回実行されます。
条件が True になるまで一連のステートメントを実行するには
Do...Loop 構造で、While キーワードの代わりに Until キーワードを使用します。 While と同様、キーワードを指定する場所によって条件をテストする場所が決まります。 次に例を示します。
Sub checkUntilFirst() Dim counter As Integer = 0 Dim number As Integer = 20 Do Until number = 15 number -= 1 counter += 1 Loop MsgBox("The loop ran " & counter & " times.") End Sub Sub checkUntilLast() Dim counter As Integer = 0 Dim number As Integer = 20 Do number -= 1 counter += 1 Loop Until number = 15 MsgBox("The loop ran " & counter & " times.") End Sub
上の例では、各 Do ループは 5 回実行されます。
指定された回数だけループを実行する
ループ内のステートメントを何度実行する必要があるのかがわからない場合には、While と Do によるループが便利です。 一方、指定の回数だけループを実行する場合は、For...Next ステートメント (Visual Basic) ループが便利です。 While や Do ループとは違って、For...Next ループには制御変数という変数があり、ループが繰り返されるたびにこの変数の値が増加または減少します。
指定回数だけ、一連のステートメントを実行するには
制御変数の開始値と終了値を決定し、For ステートメントを使用してこれを指定します。
For i As Integer = 1 To 10
制御変数がループの外側で宣言されていない場合は、As 句を使用して、For ステートメントの一部として制御変数を宣言できます。
反復処理のたびに制御変数を増加させる量を指定するには、Step キーワードを使用します。 特に指定しない場合は 1 ずつ増加します。 制御変数を減らすには負の値を使用します。
For i As Integer = 10 To 1 Step -1
For...Next 構造を閉じるには、繰り返す最後のステートメントの次に Next ステートメントを指定します。 Next ステートメントに制御変数を指定することもできます。
Function addBackward(ByVal highest As Integer) As Integer Dim total As Integer = 0 For i As Integer = highest To 1 Step -1 total += i Next i Return total End Function
上の例では、1 から highest パラメーターに渡された値までのすべての数字の合計を返します。
参照
処理手順
方法: 制御構造から制御を移す (Visual Basic)
方法: コレクションまたは配列で、各要素の複数のステートメントを実行する (Visual Basic)
方法: ループのパフォーマンスを改善する (Visual Basic)
方法: ループの次の反復処理にスキップする (Visual Basic)
参照
For Each...Next ステートメント (Visual Basic)