Puede utilizar sentencias For...Next para ejecutar un bloque de sentencias un número específico de veces. Para los bucles, utilice una variable de contador cuyo valor aumente o disminuya con cada repetición del bucle.
El siguiente ejemplo hace que un procedimiento denominado MyProc se ejecute 50 veces. La sentencia For especifica la variable de contador x y sus valores de inicio y finalización. La sentencia Next incrementa la variable de contador en 1.
En los siguientes ejemplos se muestra el uso del bucle For...Next:
Ejemplo 1:
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
'This loop executes 50 times
Next
End Sub
Con la palabra clave Step, puede aumentar o reducir la variable de contador según el valor que especifique. En el siguiente ejemplo, la variable de contador j se incrementa en 2 cada vez que se repite el bucle. Cuando el bucle termina, el total es la suma de 2, 4, 6, 8 y 10.
Ejemplo 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 disminuir la variable de contador, utilice un valor Step negativo. Debe especificar un valor de finalización que sea menor que el valor inicial. En el siguiente ejemplo, la variable de contador myNum se reduce en 2 cada vez que se repite el bucle. Cuando el bucle finaliza, el total es la suma de 16, 14, 12, 10, 8, 6, 4 y 2.
Ejemplo 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
Puede salir de cualquier sentencia For...Next antes de que el contador alcance el valor de finalización mediante la sentencia Exit For. Debido a que normalmente desea salir solo en determinadas situaciones, como cuando se produce un error, debe utilizar la sentencia Exit For en el bloque de sentencias True de una sentencia If...Then...Else. Si la condición es False, el bucle se ejecuta como de costumbre.
Ejemplo 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
Ejemplo 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