
VBAのfor~Nextとは?解説と使用例
はじめに…
日常や仕事で、「単純な同じ作業を何回も繰り返ししているなぁ」と思ったことはありませんか?
VBAのfor文を使うと、短時間で作業を終えることができるかもしれません。
for文には、主に「for~Next」「for~Each」の2種類があります。
使い分けとしては、「for~Next」は「〇回処理を繰り返したい」、「for~Each」は「配列や指定したセルの値を順番に処理を繰り返したい」になります。
ここでは「for Next」の解説を行い、その使い方を解説していきます。
目次
1.for~Next文について
1-1.for~Next文とは
ツール等を作成していて、同じ命令を何回も繰り返すときはありませんでしたか?
for~Next文は、「ある命令を指定した回数だけ繰り返す」処理を行うことができます。
1-2.for~Next文の構文
for~Next文の基本的な構文は下記になります。
Stepは省略可能です。
Sub main()
Dim i As Integer
For i = [開始する値] To [終了する値] Step [加算(減算)する値]
[繰り返したい命令]
Next i '加算(減算)する変数(変数のみの場合、+1される)
End Sub
2.for~Next文の使用例
2-1.基本的な使用例
for~Nextで囲まれた処理を、「開始する値」から「終了する値」まで繰り返します。
よく使用されるのは「AからBまでの回数を繰り返す」ですが、正確には「AからCの数だけ加算(減算)してBを超えるまで繰り返す」になります。
2ー2ー1.指定した回数分、処理を繰り返す
0~3までの値を5倍した合計値を出力する。
Sub main02()
Dim i As Integer
Dim cnt As Integer
For i = 0 To 3
cnt = cnt + i * 5
Next i
MsgBox cnt
End Sub
2ー2ー2.特定の条件で繰り返しを終了する
0~3までの値を5倍した合計値を出力する。
合計値が9を超えると、途中で終了する。
Sub main03()
Dim i As Integer
Dim cnt As Integer
For i = 0 To 3
cnt = cnt + i * 5
If cnt > 9 Then
Exit For 'cntの値が9を超えている場合、for文を抜ける
End If
Next i
MsgBox cnt
End Sub2-3.その他の使用例
for文の「To」の後に「Step」を追加することで、繰り返しの加算や減算の値を変更することができます。
例)1から10までの奇数の合計を出力
Sub main04()
Dim i As Integer
Dim cnt As Integer
For i = 1 To 10 Step 2
cnt = cnt + i
Next i
MsgBox cnt
End Sub
3.注意点
下記ソースの場合、指定した値の間だけ(下記では「0」~「3」)の処理を繰り返します。
その後、3回目のNext処理を行い、For文で変数iの値をチェックします。
そのため、for文を抜けたときの変数iの値は、「終了する値」
Sub main05()
Dim i As Integer
Dim cnt As Integer
For i = 0 To 3
‘[繰り返したい処理]
Next i
MsgBox i
End Sub
4.最後に
for~Next文は、VBA以外の言語でもよく使用される繰り返し処理です。
使いこなすことで、同じ内容を繰り返し行う作業の時間短縮を図ることができます。
ぜひ、活用していってください。








コメント