For文とは?

VBAで繰り返し処理を行う方法は複数あります。

ここでは、以下について説明します。



For〜Next文

For〜Next文は、繰り返し回数がわかっている場合に使用します。

書式を以下に示します。[]は省略できることを意味します。

For 繰り返しの初期値 To 繰り返しの終了値 [Step 繰り返しごとの増減値]

  実行する処理

Next

以下は For〜Next文 の例です

変数 iが1〜5までの間(つまり5回)繰り返し処理を行います。

  Option Explicit

Sub ForNext文の例1()

  Dim i As Integer
  
  For i = 1 To 5
  
      Debug.Print "繰り返し" + CStr(i) + "回目"
      
  Next
      
  End Sub


もう1つ例を示します。

変数 iが1〜10までの間繰り返しますが、「Step 2」としていますので、繰り返すごとに変数iの値は2ずつ増えていきます。

よって変数iは1,3,5,7,9と変化しますので5回繰り返し処理を行います。

Option Explicit

Sub ForNext文の例2()

  Dim i As Integer

  For i = 1 To 10 Step 2

      Debug.Print "繰り返し" + CStr(i) + "回目"

  Next

End Sub


For〜Each文

For〜Each文は、配列やコレクションといった、値のかたまりから1つずつ値を取り出して、なくなるまで処理を繰り返します。

書式を以下に示します。

書式を取り出した値を入れる変数はVariant型にする必要があるので注意してください。

For Each 取り出した値を入れる変数 In 配列(またはコレクション)

  繰り返し処理

Next

以下は、配列 data から値を1つずつ取り出して、なくなるまで繰り返し処理を行う例です。

    Option Explicit
  
Sub ForEach文の例()

  Dim data(4) As String
  Dim x As Variant
  
  data(0) = "A"
  data(1) = "B"
  data(2) = "C"
  data(3) = "D"
  data(4) = "E"
  
  For Each x In data
  
      Debug.Print x
      
  Next
    
End Sub
  


Exit Forによるループの脱出

For〜NextやFor Each文は、「Exit For」を使用すると、繰り返しの途中でループ処理をやめて抜け出すことができます。

以下は、For〜Next文で5回の繰り返し処理をしますが、変数iが2のときにループを脱出します。

    Option Explicit
  
Sub ExitForの例()

  Dim i As Integer
  
  For i = 1 To 5
  
      Debug.Print i
      
      If i = 2 Then
          Exit For    ' iが2のときにループを脱出
      End If
  Next
    
End Sub