方法: 複数のステートメントを繰り返し実行する (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 ループには制御変数という変数があり、ループが繰り返されるたびにこの変数の値が増加または減少します。

指定回数だけ、一連のステートメントを実行するには

  1. 制御変数の開始値と終了値を決定し、For ステートメントを使用してこれを指定します。

    For i As Integer = 1 To 10
    

    制御変数がループの外側で宣言されていない場合は、As 句を使用して、For ステートメントの一部として制御変数を宣言できます。

  2. 反復処理のたびに制御変数を増加させる量を指定するには、Step キーワードを使用します。 特に指定しない場合は 1 ずつ増加します。 制御変数を減らすには負の値を使用します。

    For i As Integer = 10 To 1 Step -1
    
  3. 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)

概念

条件判断構造 (Visual Basic)

ループ構造 (Visual Basic)

その他の制御構造 (Visual Basic)

入れ子になった制御構造 (Visual Basic)

その他の技術情報

Visual Basic における制御フロー