ヘッダー
Visual Basic サンプル集
 

For ~ Next による回数指定の繰り返し

2022/9/25

→ C# のサンプルに切り替える → Python のサンプルに切り替える

 

5回繰り返す

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 0 To 4
    Debug.WriteLine("こんにちは!")
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!

 

 

カウンター変数の型を Long にする

VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i As Long = 0 To 4
    Debug.WriteLine("こんにちは!")
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!

 

 

繰り返し回数を取得する

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 0 To 4
    Debug.WriteLine($"現在{i}周目です。")
    'Debug.WriteLine("現在" & i & "周目です。") '← VB2013以前の場合
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

現在0周目です。
現在1周目です。
現在2周目です。
現在3周目です。
現在4周目です。

 

 

途中でループから抜け出す (Exit For)

この例は本来10回繰り返す指定になっていますが、If 文で条件判断して3周目で抜けます。

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 0 To 9
    Debug.WriteLine($"カウンター={i}")
    'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
    If i = 2 Then
        Exit For
    End If
Next

Debug.WriteLine("終了")

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

カウンター=0
カウンター=1
カウンター=2
終了

 

 

ループがすべて完了したか確認する (たとえば、Exit Forしていないかどうか)

この例では 変数 i が 9999 の場合 Exit For します。ループの処理がすべて終わった後に Exit For して終わったのか、Exit For しないで終わったのかメッセージを出力します。 このまま実行すると i は 9999 にならないので Exit For は発生しないで終了します。

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

Dim isExit As Boolean = False

For i = 0 To 9
    Debug.WriteLine($"カウンター={i}")
    'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
    If i = 9999 Then '←ここを i = 2 などに変えると、最後のメッセージが出力されなくなります。
        isExit = True
        Exit For
    End If
Next

If Not isExit Then
    Debug.WriteLine("Exit Forしないでループを終了しました。") '←これが出力されます。
End If

Debug.WriteLineが表示される場所

メモ:ループが完了したかを検出する特別な機能はありません。

 

 

その周を中断し、次の周を開始する (Continue For)

If 文で条件判断して2周目と3周目であれば処理を中断して次の周を開始します。

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 0 To 4
    Debug.WriteLine($"カウンター {i} 開始")
    'Debug.WriteLine("カウンター " & i & " 開始") '← VB2013以前の場合
    If i = 1 OrElse i = 2 Then
        Continue For
    End If
    Debug.WriteLine($"カウンター {i} 終了")
    'Debug.WriteLine("カウンター " & i & " 終了") '← VB2013以前の場合
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

カウンター 0 開始
カウンター 0 終了
カウンター 1 開始
カウンター 2 開始
カウンター 3 開始
カウンター 3 終了
カウンター 4 開始
カウンター 4 終了

 

 

次の周は実行しない。次の次から実行する。

次の例では、i = 2 の周は実行されません。その前の周(i = 1の周)で i を +1 しているからです。

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 0 To 4
    Debug.WriteLine($"カウンター={i}")
    'Debug.WriteLine("カウンター=" & i & " 開始") '← VB2013以前の場合
    If i = 1 Then
        i += 1
    End If
Next

Debug.WriteLineが表示される場所

メモ:この例のようにカウンター変数に直接代入することで前にも後ろにも任意の周に移動できます。

実行すると下記の通り出力されます。

カウンター=0
カウンター=1
カウンター=3
カウンター=4

 

 

2重ループで九九の表を作成する

VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For x = 1 To 9
    For y = 1 To 9
        Debug.Write(vbTab & x * y)
    Next
    Debug.WriteLine("")
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

 

 

カウントを 5 から開始する

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 5 To 7
    Debug.WriteLine($"カウンター={i}")
    'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

カウンター=5
カウンター=6
カウンター=7

 

 

2ずつカウントアップする (Step 2)

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 0 To 8 Step 2
    Debug.WriteLine($"カウンター={i}")
    'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

カウンター=0
カウンター=2
カウンター=4
カウンター=6
カウンター=8

 

 

カウントダウンする (Step -1)

VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i = 100 To 96 Step -1
    Debug.WriteLine($"カウンター={i}")
    'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

カウンター=100
カウンター=99
カウンター=98
カウンター=97
カウンター=96

 

 

列挙型を繰り返す

この例では DayOfWeek 列挙型 のメンバーを列挙します。

VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

For i As DayOfWeek = DayOfWeek.Sunday To DayOfWeek.Saturday
    Debug.WriteLine(CInt(i) & ":" & i.ToString)
Next

Debug.WriteLineが表示される場所

実行すると下記の通り出力されます。

0:Sunday
1:Monday
2:Tuesday
3:Wednesday
4:Thursday
5:Friday
6:Saturday

 

 


VB.NET2003対応 VB2005対応 VB.NET 2003 と VB2005 には型推論機能がないので、For i = 5 ... のように書く代わりに For i As Integer = 5 ... と書くか、変数 i を For の前で宣言しておく必要があります。これをやればこの記事で紹介しているほとんどのサンプルは使用できます。

VB.NET2002対応 VB.NET (2002) では For を使って変数を宣言することができないので For i = 5 ... のようなプログラムがあれば、For の前で変数 i を Dim i As Integer のように宣言しておく必要があります。これをやればこの記事で紹介している多くのサンプルは使用できます。

VB6対応 VB6では 上述の VB.NET 2002 と同じようにすれば For ~ Next自体はだいたい動作します。