Você pode usar instruções For...Next para executar um bloco de instruções um número específico de vezes. Para loops, use uma variável de contador cujo valor aumente ou diminua a cada repetição do loop.
O exemplo a seguir faz com que um procedimento chamado MyProc seja executado 50 vezes. A instrução For especifica a variável de contador x e seus valores inicial e final. A instrução Next incrementa a variável de contador em 1.
Os exemplos a seguir ilustram o uso do loop For Next.
Exemplo 1:
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
'This loop executes 50 times
Next
End Sub
Com a palavra-chave Step, você pode aumentar ou diminuir a variável de contador pelo valor especificado. No exemplo a seguir, a variável de contador j é aumentada em 2 toda vez que o loop é repetido. Quando o loop termina, o total é a soma de 2, 4, 6, 8 e 10.
Exemplo 2:
Sub TwosTotal()
Dim j, total
total = 0
For j = 2 To 10 Step 2
total = total + j
Next
'The total is 30
End Sub
Para diminuir a variável de contador, use um valor de Step negativo. Especifique um valor final que seja menor que o valor inicial. No exemplo a seguir, a variável de contador myNum é reduzida em 2 toda vez que o loop é repetido. Quando o loop termina, o total é a soma de 16, 14, 12, 10, 8, 6, 4 e 2.
Exemplo 3:
Sub NewTotal()
Dim myNum, total
total = 0
For myNum = 16 To 2 Step -2
total = total + myNum
Next
'The total is 72
End Sub
Você pode sair de qualquer instrução For...Next antes de o contador atingir seu valor final usando a instrução Exit For. Como normalmente só é desejável sair em determinadas situações (por exemplo, quando um erro ocorre), você deve usar a instrução Exit For no bloco de instruções True de uma instrução If...Then...Else. Se a condição for False, o loop será executado como de costume.
Exemplo 4:
Sub ExitForExample()
Dim i, total
total = 0
For i = 1 To 10
total = total + i
If i = 5 Then Exit For
Next
'Exited loop early. Total is 15
End Sub
Exemplo 5:
Sub DecreaseWithExit()
Dim n, sum
sum = 0
For n = 20 To 0 Step -2
sum = sum + n
If n = 10 Then Exit For
Next
'Exited loop early. sum is 90
End Sub