
目次
VBAのfor文を利用した繰り返し処理について紹介していきます。
基本的な文法なのでぜひおさえておきましょう。
それではさっそくやっていきます。
基本的なfor文
for文の記載方法は下記のようになります。
開始の値が終了の値になるまで繰り返し処理を行います。
For 開始 To 終了
処理
Next
例を見てみましょう。
A列に1~10までの数字を並べてみましょう。
Private Sub btnFor_Click()
'通常
For i = 1 To 10
Cells(i, 1).Value = i
Next
End Sub
結果
For文で宣言している変数「i」が1から10になるまで繰り返す処理を行っており、
Cells(i,1).Value = iの部分が10回繰り返されています。
Step カウントする値を指定する
先ほどのFor文では省略していた、Stepについて紹介していきます。
Stepを指定することでカウントする値を指定することができます。
例を見てみましょう。
Private Sub btnFor_Click()
'Step
For i = 1 To 10 Step 2
Cells(i, 1).Value = i
Next
End Sub
結果
Stepを2にして繰り返し処理を行いました。
1,3,5,7,9と2ずつ加算されていることがわかります。
このようにStepを指定することで、加算する値を指定することができます。
またStepは「-(マイナス)」を指定することができます。
例では10から-1ずつされ1になるまで繰り返し処理を行います。
Private Sub btnFor_Click()
'Step -1
For i = 10 To 1 Step -1
Cells(i, 1).Value = i
Next
End Sub
結果
結果からはわかりにくいですが、10行目のセルにから1行目に向かって入力されていきます。
Exit For 繰り返し処理を途中で終了させる
Exit For を利用することで、For文の処理を途中で終了させることができます。
ある条件の時、繰り返し処理を終了させたい時に使用します。
例を見てみましょう。
8回目の繰り返し処理の時、For文を終了させるプログラムになっています。
Private Sub btnFor_Click()
'Exit For
For i = 1 To 10
If i = 8 Then
Exit For
End If
Cells(i, 1).Value = i
Next
End Sub
結果
繰り返し処理が7回行われており、8回目で終了させていることが確認できました。
Continue 次のループへ移動する。
繰り返し処理をしている際に、次のループへ処理を飛ばす方法を紹介します。
別の原語では「Continue」などが使えるのですが、VBAではありませんので、
代わりに「Goto」を利用しましょう。
例を紹介します。
8回目の処理を飛ばす例を作成しました。
Private Sub btnFor_Click()
'Continue For
For i = 1 To 10
If i = 8 Then
GoTo N1
End If
Cells(i, 1).Value = i
N1:
Next
End Sub
結果
結果をみると「8」のみが飛ばされています。
「GoTo N1」 とすることで、「N1:」のところまで処理を飛ばしてくれます。
例ではN1としていますが、名称は変更することができます。
For文 2重ループ
最後に、For文を入れ子にして繰り返し処理を行う方法を紹介します。
VBAでは、行と列で2重ループすることがよくあるので是非参考にしてください。
例では、ループ処理を10回ずつ行っています。
Private Sub btnFor_Click()
'2重ループ
For i = 1 To 10
For j = 1 To 10
Cells(i, j).Value = i * j
Next
Next
End Sub
結果
「jが列」、「iが行」をカウントアップさせています。
このように行と列を繰り返すことができると表を作成することができます。
サンプルソース
サンプルソースを載せておきます。
Private Sub btnFor_Click()
'通常
For i = 1 To 10
Cells(i, 1).Value = i
Next
'Step
For i = 1 To 10 Step 2
Cells(i, 2).Value = i
Next
'Step -1
For i = 10 To 1 Step -1
Cells(i, 3).Value = i
Next
'Exit For
For i = 1 To 10
If i = 8 Then
Exit For
End If
Cells(i, 4).Value = i
Next
'Continue For
For i = 1 To 10
If i = 8 Then
GoTo N1
End If
Cells(i, 5).Value = i
N1:
Next
'2重ループ
For i = 1 To 10
For j = 1 To 10
Cells(i, j).Value = i * j
Next
Next
End Sub
まとめ
For文は、最も基本的な文法の1つです。
必ず押さえておきましょう。
繰り返し処理をする方法は、For文だけではなく
WhileやDoなどほかにもありますので、
使いやすいやり方を1つ覚えておくのをおすすめします。