SINTAXIS
El bucle FOR NEXT en VBA nos permite en Excel (o cualquier otro lenguaje de programación) repetir una acción un número de veces dado. Su sintaxis es la siguiente:
For CONTADOR = COMIENZO To FINAL [Step VALOR_DE_PASO] 'código [Exit For] 'código Next
Donde:
CONTADOR: es la variable numérica de control del bucle
COMIENZO: es el valor numérico donde comenzará el CONTADOR. Es un número entero.
FINAL: es el valor numérico hasta donde contará el CONTADOR.
Step VALOR_DE_PASO: opcional. Valor numérico que irá sumándose al CONTADOR a lo largo del bucle. Es un numero natural.
‘código: es el código de la expresión que queremos que se ejecute dentro del bucle todas las veces.
Exit For: sentencia opcional que nos permite salir del bucle y continuar la macro a partir del
NEXT final sin necesidad de haber recorrido el bucle completamente.EJEMPLOS
A continuación vamos a ver una serie de ejemplos que nos permitan entender mejor el bucle FOR NEXT en VBA. En cada ejemplo veremos una particularidad en concreto de este tipo de bucles y se explicará.
Ejemplo 1:
En este ejemplo tenemos el bucle FOR NEXT en VBA más sencillo. El bucle cuenta de 1 a 10 y va poniendo en una columna el valor del contador.
For CONTADOR = 1 To 10
fila = CONTADOR
Cells(fila, 1) = CONTADOR
Next
Ejemplo 2:
En este ejemplo añadimos la propiedad “step 2” que incrementará el contador de 2 en 2. Es decir, inicialmente el contador valdrá 1, luego 3, luego 5 y así sucesivamente.
For CONTADOR = 1 To 10 Step 2
fila = CONTADOR
Cells(fila, 2) = CONTADOR
Next
Ejemplo 3:
En este ejemplo el bucle for next en vba va contando hacia atrás gracias al step -1 y al contador que empieza en vez de en 1 en 10 y acaba en 1
.For CONTADOR = 10 To 1 Step -1
fila = CONTADOR
Cells(fila, 3) = CONTADOR
Next
Ejemplo 4:
En este ejemplo utilizamos la expresión Exit For cuando el contador llega hasta 49 y lanzamos un mensaje en pantalla en este momento.
For CONTADOR = 10 To 100
If CONTADOR = 49 Then
MsgBox "El contador ha llegado al número " & CONTADOR
Exit For
End If
Next
Ejemplo 5:
En este ejemplo usamos un código muy similar al anterior pero añadimos al final del IF (ver más sobre IF en VBA) otro pedacito de código.
For CONTADOR = 10 To 100
If CONTADOR = 49 ThenEJERCICIO
MsgBox "El contador ha llegado al número " &; CONTADOR
Exit For
End If
fila = CONTADOR
Cells(CONTADOR, 5) = CONTADOR
Next
El ejercicio que os proponemos es el siguiente:
Crea una macro con el bucle FOR NEXT en VBA que cuente de 5 en 5 y vaya poniendo en celda sucesivas el valor del contador. El contador deberá empezar en 0 y terminar en 100. Deberá escribirse en la columna F desde la fila 1 hasta la fila 20.
Solución
La solución al ejercicio planteado en el anterior párrafo es la siguiente:
fila = 0
For CONTADOR = 0 To 100
Step 5 Cells(1, "f").Offset(fila, o) = CONTADOR
fila = fila + 1
Next
El truco consiste en utilizar la función OFFSET para ir avanzando a lo largo de las filas. La variable fila se incrementa en uno cada vez que se recorre el bucle.
.
No hay comentarios:
Publicar un comentario