Código VBA: For…Next

Continuamos con los ejemplos de código VBA con Excel, esta vez vamos a aprender el comando FOR…NEXT para crear bucles. Este comando nos permite crear bloques de instrucciones que se repiten un número determinado de veces. De tal manera que una vez llegue al número límite de repeticiones que le hayamos especificado, se sale del bucle.

Para proceder con el ejemplo, vamos a crear en primer lugar un botón de comando ActiveX dandole el tamaño que queramos. A continuación haremos doble clic sobre el mismo para entrar en el editor VBA.

fornext01

Ahora vamos a insertar un código sencillo con el comando For…Next. Escribiremos después de la línea de Sub la instrucción For Mensajito = 1 To 9 Step 1, donde la variable «Mensajito» representa el contador del bucle, el primer número 1 marca el valor inicial del contador, el número 10 marca el valor final del contador y el valor que acompaña a la palabra clave Step representa el incremento.

En la línea siguiente, vamos a usar el comando Msgbox para que aparezca un mensaje que realice una cuenta atrás con un pequeño texto que unimos mediante el carácter «&»

MsgBox («Pulsa el botón Aceptar » & 10 – Mensajito & » veces más»)

Para terminar insertaremos la instrucción Next Mensajito que indica el final del bucle. Cada vez que llega a la instrucción Next se suma el incremento al valor del contador («Mensajito»). Cuando este alcanza el valor final establecido, en este caso 9, se ejecuta la instrucción siguiente. Así el primer mensaje que nos devuelve es «Pulsa el botón Aceptar 9 veces más» (es decir 10 – Mensajito, que tiene valor inicial 1). Cuando se repita el bucle la variable Mensajito irá incrementándose en una unidad de tal modo que para el segundo mensaje que obtendremos será «Pulsa el botón Aceptar 8 veces más» (10-2) y así sucesivamente hasta llegar a .

Escribiremos otra instrucción de Msgbox con el texto «Buen trabajo!». El código debe quedar así:

Private Sub CommandButton1_Click()
For Mensajito = 1 To 9 Step 1
    MsgBox («Pulsa el botón Aceptar » & 10 – Mensajito & » veces más»)
Next Mensajito

MsgBox («Buen trabajo!»)
End Sub

fornext02

Si ejecutamos la macro, efectivamente aparecerá una pantalla indicandonos que debemos pulsar el botón aceptar nueve veces más, si hacemos clic sobre el botón aceptar o cerramos la ventana aparecerá uno nuevo avisandonos que nos falta pulsar el botón aceptar  8 veces más y así hasta el final del bucle.

fornext03

Este ha sido un ejemplo bastante sencillo en el que hemos utilizado la instrucción For… Next. Vamos a aplicar esta instrucción a otro ejemplo algo más complejo. En primer lugar borraremos el código de la macro que acabamos de escribir y declararemos dos variables («Fila» y «Numeritos») como enteras.

Dim Fila As Integer
Dim Numeritos As Integer

Además diremos que el valor de la variable Fila es uno.

Fila = 1

Ahora crearemos un bucle para que se rellene un listado  con una serie de números desde 1 hasta 100 crecientes con intervalos de cinco unidades dentro de la columna A:

For Numeritos = 1 To 100 Step 5
    ActiveSheet.Cells(Fila, 1) = Numeritos

Como queremos que cada número aparezca en una celda correlativa dentro de la columna A, estableceremos dentro del bucle que el valor de la fila aumente en una unidad con cada pase del bucle.:   Fila = Fila + 1

… y en la línea siguiente indicaremos el final del bucle con la variable a la que hace referencia: Next Numeritos

En definitiva nuestro código quedará como sigue:

Private Sub CommandButton1_Click()
Dim Fila As Integer
Dim Numeritos As Integer
      Fila = 1
For Numeritos = 1 To 100 Step 5
    ActiveSheet.Cells(Fila, 1) = Numeritos
    Fila = Fila + 1
Next Numeritos
End Sub

Al ejecutar la macro, se rellenará automáticamente en la columna A números de cinco en cinco del 1 al 100. Como hemos empezado en el número uno, el último número de la serie que se rellenará es el 96.

fornext04


Descubre más desde Asiento descuadrado

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *