Visual Basic サンプル集 |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
For ~ Next による回数指定の繰り返し
2022/9/25
→ C# のサンプルに切り替える → Python のサンプルに切り替える
目次
5回繰り返す
For i = 0 To 4
Debug.WriteLine("こんにちは!")
Next
実行すると下記の通り出力されます。
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
カウンター変数の型を Long にする
For i As Long = 0 To 4
Debug.WriteLine("こんにちは!")
Next
実行すると下記の通り出力されます。
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
繰り返し回数を取得する
For i = 0 To 4
Debug.WriteLine($"現在{i}周目です。")
'Debug.WriteLine("現在" & i & "周目です。") '← VB2013以前の場合
Next
実行すると下記の通り出力されます。
現在0周目です。
現在1周目です。
現在2周目です。
現在3周目です。
現在4周目です。
途中でループから抜け出す (Exit For)
この例は本来10回繰り返す指定になっていますが、If 文で条件判断して3周目で抜けます。
For i = 0 To 9
Debug.WriteLine($"カウンター={i}")
'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
If i = 2 Then
Exit For
End If
Next
Debug.WriteLine("終了")
実行すると下記の通り出力されます。
カウンター=0
カウンター=1
カウンター=2
終了
ループがすべて完了したか確認する (たとえば、Exit Forしていないかどうか)
この例では 変数 i が 9999 の場合 Exit For します。ループの処理がすべて終わった後に Exit For して終わったのか、Exit For しないで終わったのかメッセージを出力します。 このまま実行すると i は 9999 にならないので Exit For は発生しないで終了します。
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
メモ:ループが完了したかを検出する特別な機能はありません。
その周を中断し、次の周を開始する (Continue For)
If 文で条件判断して2周目と3周目であれば処理を中断して次の周を開始します。
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
実行すると下記の通り出力されます。
カウンター 0 開始
カウンター 0 終了
カウンター 1 開始
カウンター 2 開始
カウンター 3 開始
カウンター 3 終了
カウンター 4 開始
カウンター 4 終了
次の周は実行しない。次の次から実行する。
次の例では、i = 2 の周は実行されません。その前の周(i = 1の周)で i を +1 しているからです。
For i = 0 To 4
Debug.WriteLine($"カウンター={i}")
'Debug.WriteLine("カウンター=" & i & " 開始") '← VB2013以前の場合
If i = 1 Then
i += 1
End If
Next
メモ:この例のようにカウンター変数に直接代入することで前にも後ろにも任意の周に移動できます。
実行すると下記の通り出力されます。
カウンター=0
カウンター=1
カウンター=3
カウンター=4
2重ループで九九の表を作成する
For x = 1 To 9
For y = 1 To 9
Debug.Write(vbTab & x * y)
Next
Debug.WriteLine("")
Next
実行すると下記の通り出力されます。
カウントを 5 から開始する
For i = 5 To 7
Debug.WriteLine($"カウンター={i}")
'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
Next
実行すると下記の通り出力されます。
カウンター=5
カウンター=6
カウンター=7
2ずつカウントアップする (Step 2)
For i = 0 To 8 Step 2
Debug.WriteLine($"カウンター={i}")
'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
Next
実行すると下記の通り出力されます。
カウンター=0
カウンター=2
カウンター=4
カウンター=6
カウンター=8
カウントダウンする (Step -1)
For i = 100 To 96 Step -1
Debug.WriteLine($"カウンター={i}")
'Debug.WriteLine("カウンター=" & i) '← VB2013以前の場合
Next
実行すると下記の通り出力されます。
カウンター=100
カウンター=99
カウンター=98
カウンター=97
カウンター=96
列挙型を繰り返す
この例では DayOfWeek 列挙型 のメンバーを列挙します。
For i As DayOfWeek = DayOfWeek.Sunday To DayOfWeek.Saturday
Debug.WriteLine(CInt(i) & ":" & i.ToString)
Next
実行すると下記の通り出力されます。
0:Sunday
1:Monday
2:Tuesday
3:Wednesday
4:Thursday
5:Friday
6:Saturday
VB.NET 2003 と VB2005 には型推論機能がないので、For i = 5 ... のように書く代わりに For i As Integer = 5 ... と書くか、変数 i を For の前で宣言しておく必要があります。これをやればこの記事で紹介しているほとんどのサンプルは使用できます。
VB.NET (2002) では For を使って変数を宣言することができないので For i = 5 ... のようなプログラムがあれば、For の前で変数 i を Dim i As Integer のように宣言しておく必要があります。これをやればこの記事で紹介している多くのサンプルは使用できます。
VB6では 上述の VB.NET 2002 と同じようにすれば For ~ Next自体はだいたい動作します。