Uso de Instruções For...Next

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