El bucle For Next en VBA

Una de las cosas que más me gustan de VBA es que puede hacer por ti cosas tan increíbles como repetir un montón de veces lo mismo sin apenas esfuerzo.

Este es el caso del bucle For Next en VBA y dirás, ¿qué es un bucle en VBA? Pues es la repetición de cierto código un número determinado de veces.

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 Then
        MsgBox "El contador ha llegado al número " & CONTADOR
        Exit For
    End If
    fila = CONTADOR
    Cells(CONTADOR, 5) = CONTADOR
Next

Bonus Track: Ejercicio

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 bonus track planteada 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.

En el siguiente enlace podéis descargar un libro de Excel que contiene las diferentes macros que hemos ido viendo y así podréis modificarlas y aprender a usarlas como un verdadero experto el bucle FOR NEXT en VBA.

Ejemplos del bucle FOR NEXT en VBA

(Visited 205.009 times, 1 visits today)
Categorías VBA

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies