目次
01. For文
02. サンプル
03. For Each文
For文とは
For 変数 = 開始値 To 終了値 (Step 増減値) 実行される処理 Next |
- 処理を繰り返す時に使用します。
- 最初にforを書くのでfor文と呼ばれます。繰り返しはループとも呼ばれます。
- 変数が開始値から終了値の範囲内の間、繰り返します。
- 「Step 増減値」を省略した場合は、増減値=1になります。マイナス値の指定も可能です。
- Excel、Accessとも同じです。
For文で処理を繰り返す
Sub test1()
For a = 1 To 5
Debug.Print a '1 2 3 4 5が出力される
Next
End Sub
2行目は、1から5までの処理を繰り返します。
変数のaはカウンター変数またはループ変数と呼ばれます。
For文で配列の値を取得する
Sub test1()
Dim color As Variant
color = Array("赤", "黄", "青") '配列
For a = 0 To UBound(color)
Debug.Print color(a) '赤 黄 青が出力される
Next
End Sub
3行目は、配列です。
5行目のUBoundは、配列の添字の最大値を返します。この場合は2を返します。
6行目は、変数と添字で配列の値を表示しています。
For文でStep(増分/減分)を使用する
Sub test1()
For a = 1 To 10 Step 2
Debug.Print a '1 3 5 7 9が出力される
Next
For b = 10 To 1 Step -2
Debug.Print b '10 8 6 4 2が出力される
Next
End Sub
2行目は、Stepの値が2です。増分が2なので4行目は1,3,5,7,9が表示されます。
6行目は、減分です。値が2ずつ減っていきます。
ループ処理を抜ける(Exit For)
For文でExit Forを使用してループ処理を抜けるサンプルです。
Sub test1()
For a = 1 To 5
If (a = 3) Then
Exit For
End If
Debug.Print a '1 2が出力される
Next
End Sub
4行目は、Exit Forを使用してループ処理から抜けています。
ループ処理で処理をスキップする(GoTo)
VBAには他言語にあるcontinueがありません。
そのためGoTo文を使って同じような動きをさせます。
Sub test1()
For a = 1 To 5
If (a = 3) Then
GoTo CONTINUE
End If
Debug.Print a '1 2 4 5が出力される
CONTINUE:
Next
End Sub
4行目は、GoTo文で8行目に移動します。
7行目は、ラベルです。
For Each文(ループで加算を使用しないfor文)
For Each 変数 In コレクションや配列 実行される処理 Next |
- 処理を繰り返したいときに使用します。
- コレクションの数や配列の値の数分処理を繰り返します。
- コレクションとはワークシートやセルの範囲などです。
For Each文のサンプルです。
Sub test1()
Dim arr As Variant
arr = Array(1, 2, 3) '配列
For Each a In arr
Debug.Print a '1 2 3が出力される
Next
End Sub
3行目は、配列をセットしています。
5行目は、配列の値の数分処理を繰り返します。
関連の記事