Do ~ Loop によるループは、無限ループになるので、何らかの条件を満たした時に Exit Do
を明示的に呼び出してループを抜ける必要があります。
Dim i As Long
Do
If i >= 3 Then
Debug.Print "ループを抜けます"
Exit Do
End If
Debug.Print "Count = " & i
i = i + 1
Loop
Count = 0
Count = 1
Count = 2
ループを抜けます
Sub Test()
Dim i As Integer
For i = 1 To 5
Cells(i, 1).Value = i * 100
Next i
End Sub
2重ループも同様に記述できます。
Sub Test()
Dim x As Integer, y As Integer
For y = 1 To 2
For x = 1 To 5
Cells(y, x).Value = x & "," & y
Next
Next
End Sub
Step キーワードと組み合わせることで、数値を減らしながらループ処理することもできます。
Sub CountDown()
Dim i As Long
For i = 3 To 0 Step -1
Debug.Print i
Next
End Sub
Sub Test()
Dim i As Integer
i = 1
Do While i < 5
Cells(1, i).Value = i * 100
i = i + 1
Loop
End Sub
Dim i As Integer
i = 1
Do While Cells(1, i).Value <> ""
Cells(2, i).Value = Cells(1, i).Value * 10
i = i + 1
Loop
Sub Test()
Dim r As Range
For Each r In Range("A1:C3")
r.Value = r.Address
Next
End Sub
このコードを実行すると、A1 ~ C3 の各セルに $A$1
~ $C$3
というテキストが設定されます。