VB.NETのFor文で処理を繰り返すサンプルです。
目次
| サンプル | For文とは / For文のサンプル / For文で配列の値を取得 / Step(増減値) | 
| ループを抜ける(Exit For) / 2重ループでExit Forを使用 | |
| ループの先頭に戻る(Continue For) / 2重ループでContinue Forを使用 | |
| For Each文で配列の値を取得する | 
For文とは
| For 変数 = 開始値 To 終了値  [Step 増減値] 実行される処理 Next [変数] | 
- 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。繰り返しはループとも呼ばれます。
- 変数が開始値から終了値の範囲内の間、繰り返します。
- 「Step 増減値」を省略した場合は、増減値=1になります。マイナス値の指定も可能です。
- ループで使用する変数をカウンター変数またはループ変数といいます。
- 以下は、MicrosoftのFor...Next ステートメントのリンクです。
 https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/statements/for-next-statement
For文のサンプル
Module Module1
	Sub Main()
		For i = 0 To 5
			Console.WriteLine(i) ' 0 1 2 3 4 5 が出力される
		Next i
	End Sub
End Module3行目は、0から5までの処理を繰り返します。
For文で配列の値を取得
Module Module1
	Sub Main()
		Dim color() As String = {"赤", "黄", "青"} '配列
		For i = 0 To UBound(color)
			Console.WriteLine(color(i)) '赤 黄 青が出力される
		Next i
	End Sub
End Module3行目は、配列です。
5行目のUBoundは、配列の添字の最大値を返します。この場合は2を返します。
6行目は、変数と添字で配列の値を表示しています。
Step(増減値)
Stepで増減値を指定できます。
Module Module1
	Sub Main()
		For i = 1 To 10 Step 2
			Console.Write(i)  '1 3 5 7 9が出力される
		Next i
		For i = 10 To 1 Step -2
			Console.Write(i) '10 8 6 4 2が出力される
		Next i
	End Sub
End Module4行目は、Step 2なのでループ変数の値が2つずつ増加します。
8行目は、Step-2なのでループ変数の値が2つずつ減少します。
ループを抜ける(Exit For)
Module Module1
    Sub Main()
        Dim i As Integer '変数
        For i = 0 To 5
            If i = 3 Then
                Exit For
            End If
            Console.Write(i) ' 0 1 2が出力される
        Next i
    End Sub
End Module7行目のExit Forでfor文を抜けます。
9行目は、0,1,2が出力されます。
2重ループでExit Forを使用
内側のFor文を抜けます。
Module Module1
    Sub Main()
        Dim i, j As Integer '変数
        For i = 0 To 2
            For j = 0 To 2
                If j = 0 Then
                    Exit For
                End If
                Console.Write("j=" & j) '出力なし
            Next j
            Console.Write("i=" & i) 'i=0 i=1 i=2が出力される
        Next i
    End Sub
End Module5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のExit Forは、内側のfor文のみ抜けます。
ループの先頭に戻る(Continue For)
Module Module1
    Sub Main()
        Dim i As Integer '変数
        For i = 0 To 2
            If i = 1 Then
                Continue For
            End If
            Console.Write(i) '0 2が出力される
        Next i
    End Sub
End Module7行目のContinue Forでループ処理の先頭の5行目に戻ります。
9行目は、0と2が出力されます。
2重ループでContinue Forを使用
内側のFor文の先頭に戻ります。
Module Module1
    Sub Main()
        Dim i, j As Integer '変数
        For i = 0 To 1
            For j = 0 To 1
                If j = 0 Then
                    Continue For
                End If
                Console.Write("j=" & j) 'j=1 j=1が出力される
            Next j
            Console.Write("i=" & i) 'i=0 i=1が出力される
        Next i
    End Sub
End Module5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のContinue Forは、内側のfor文の先頭の6行目に戻ります。
For Each文で配列の値を取得する
| For Each ( 変数1 in 変数2 ){ 実行される処理(変数1を使用する) } | 
- 上記for文との違いは、変数の値を加算する処理がありません。
- 配列やリストの要素を順番にアクセスします。
Module Module1
    Sub Main()
        Dim a() As String = {"赤", "黄", "青"} '配列
        For Each b As String In a
            Console.WriteLine(b) '赤 黄 青が出力される
        Next
    End Sub
End Module5行目は、For Each文です。上記For文との違いは、数値の設定がありません。
関連の記事
