Excel VBA で処理を自動化する際、同じ操作を何回も繰り返す「繰り返し処理(ループ)」は重要な構文です。
特に、回数を明確に指定して繰り返す処理 は、行や列に対して規則的にデータを操作したいときなどに役立ちます。
本記事では、繰り返し処理の回数を指定する方法 と、実務で使える活用例 をわかりやすく解説します。
目次
回数指定の繰り返しは For...Next 構文を使う
VBA で 繰り返し回数を明確に指定したい場合 は、For...Next ループを使います。
✅ 基本構文
Dim i As Integer
For i = 開始値 To 終了値
' ここに繰り返したい処理を書く
Next i
📌 i はカウンター(回数カウント用の変数)として使用されます。
回数指定でセルに連番を入力する例
Sub InsertNumbers()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
📌 A列の1〜10行目に、1〜10の数字が自動入力されます。
【VBA】For-Nextループが上手く動作しない原因と対応策
回数を変数で指定する方法
回数を変数にすれば、ユーザー入力や他のセルの値に応じて柔軟に繰り返し回数を変更できます。
Sub LoopByVariable()
Dim i As Integer
Dim countNum As Integer
countNum = Range("B1").Value ' B1の値を回数とする
For i = 1 To countNum
Cells(i, 1).Value = "行番号:" & i
Next i
End Sub
📌 セルの値に応じて、繰り返し処理の回数を調整!
回数を逆順に指定する(カウントダウン)
Sub CountdownLoop()
Dim i As Integer
For i = 10 To 1 Step -1
Cells(11 - i, 2).Value = "残り:" & i
Next i
End Sub
📌 Step -1 を指定することで、10 から 1 へ減らしながらループします。
二重ループで回数を組み合わせる
Sub DoubleLoop()
Dim i As Integer, j As Integer
For i = 1 To 3
For j = 1 To 5
Cells(i, j).Value = i * j
Next j
Next i
End Sub
📌 3行×5列の範囲に掛け算の結果を自動入力!
📌 外側ループと内側ループで処理を組み合わせることができます。
条件付きでループを途中で止める(Exit For)
Sub LoopWithExit()
Dim i As Integer
For i = 1 To 100
If Cells(i, 1).Value = "" Then
Exit For ' 空白セルが見つかったらループ終了
End If
Cells(i, 2).Value = "データあり"
Next i
End Sub
📌 「空白が出るまで繰り返す」というような柔軟な使い方も可能です。
【VBA】Exit Forの入れ子(ネスト)する方法:For文
・他のループ構文との違い
| 構文 | 特徴 |
|---|---|
For...Next | 回数が明確な繰り返しに最適 |
Do While...Loop | 条件が成り立つ限り繰り返す(回数は不明) |
Do Until...Loop | 条件が成立するまで繰り返す |
For Each...Next | 範囲やオブジェクトを順番に処理 |
📌 回数指定なら For...Next が基本!
📌 終了条件で制御したいなら Do While や Do Until が便利。
・よくあるミスと注意点
| ミス例 | 原因と対策 |
|---|---|
Next を忘れる | For には必ず Next が必要 |
| 回数が 0 のとき無限ループになる | 終了値が開始値より小さいときは Step -1 を忘れずに |
| セル操作が間違っている | Cells(行, 列) の指定ミスに注意 |
・まとめ
| 項目 | 内容 |
|---|---|
| 基本構文 | For i = 1 To 10 ... Next i |
| 柔軟な繰り返し | 変数やセルの値を使って回数を指定できる |
| カウントダウン | Step -1 を使えば逆順に繰り返し可能 |
| 多次元処理 | 二重ループで行列操作もできる |
| 処理の中断 | Exit For で条件による途中終了が可能 |