Excel VBA

[ExcelVBA] 繰り返し処理を理解しよう![For_Nextステートメント]

2020年4月5日

 

 

本記事はエクセル2019で動作確認を行っています。

実際にVBAをご自身で記入することが習得への近道です。

 

困ってます
何度も同じ処理をするとコードが長くなってしまいます。

決まった処理を繰り返し行うにはどうしたらいいですか?

 

このような疑問にお答えします。

 

 

 

VBAの繰り返し処理には、

指定した回数だけ処理を行う。

条件に一致するまで処理を繰り返す。

の方法があります。

 

今回は指定した回数だけ処理を行うFor_Nextステートメントについてご紹介していきます。

(式)

Dim カウント変数 As データ型

For カウント変数=初期値 To 最終値(Step 増加値)

 処理内容 (Exit For)

Next (カウント変数)

 

指定した回数だけ処理を行う。

 

下のエクセルを例にVBAの確認を行います。

A列の果物をC列に繰り返しの回数を指定して記述していきます。

問題

 

 

Sub 繰り返し1()

    Dim i As Long
    
    For i = 2 To 5
               
        Cells(i, 3).Value = Cells(i, 1)
        
    Next
      
End Sub

 

解説

iの変数に2から5を順番に代入していきます。

Nextまでコードが動くと、iの変数に自動的に1が足されiが5になるまで繰り返し処理を行います。

 

実行結果

 

Stepの使い方

 

何個かおきに処理を実行するには

For カウント変数=初期値 To 最終値 Step 増加値

と記述し、増加値に何個おきか指定します。

この時注意としては

ポイント

1つおき→2を指定

2つおき→3を指定

のように希望より1つ多く指定してください。

 

Sub 繰り返し2()

    Dim i As Long
    
    For i = 2 To 5 Step 2
               
        Cells(i, 3).Value = Cells(i, 1)
        
    Next
      
End Sub

 

解説

「Step 2」と指定することで、1つ飛ばしをして記述することができます。

 

実行結果

 

途中で繰り返し処理を抜け出す。

 

途中で条件に合った場合に抜け出す処理を行いたい場合には、Exit Forを使用します。

 

Sub 繰り返し3()

    Dim i As Long
    
    For i = 2 To 5 Step 2
    
    If Range("A1").Value = "" Then Exit For
            
        Cells(i, 3).Value = Cells(i, 1)
        
    Next
      
End Sub

 

解説

A1が空欄の場合はFor_Nextステートメントを抜け出すようにします。

Ifステートメントの後にExit Forを記述することで、条件に合った場合に抜け出すことができます。

この時のIfステートメントのはEnd Ifは必要ありません。

 

実行結果

 

今回For_Nextステートメントについて見てきました。

最後まで目を通していただきありがとうございます。

 

 

 

-Excel VBA
-

Copyright© Ronpeee blog , 2023 All Rights Reserved.