VBA For文 繰り返し処理

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つ覚えておくのをおすすめします。

 

EXCEL VBAの記事一覧

おすすめの記事