Excel VBA Loops

Los bucles pueden considerarse como el componente de mejor funcionamiento de VBA y también pueden considerarse como el corazón de las macros. Por lo general, lo ayudan a reducir la cantidad de líneas en su código y hacen el trabajo en minutos, lo que puede llevar horas a un ser humano.

En la vida cotidiana, a un programador se le ocurren casos en los que necesita ejecutar el mismo conjunto de códigos una y otra vez. Se llama bucle. Obviamente, cada vez que se ejecute el mismo código dará el mismo resultado con algún cambio fraccional en la variable. El bucle tiene un gran conjunto de ventajas, pero la más importante de todas es la automatización. Ayuda a automatizar las cosas.

Si no ha usado VBA Script antes, puede abrir un libro de Excel y presionar Alt + F11 . Se abrirá un proyecto VBA.

Profundicemos más adentro.

Supongamos que queremos imprimir de 1 a 10 números de una sola vez. Podemos hacerlo con el siguiente código.

Código:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Si puede pasar el código rápidamente, he agregado Debug.Print uno por uno para imprimir números del 1 al 10. Después de ejecutar el código, podemos ver el resultado en la Ventana Inmediata. Para abrir la ventana Inmediato, presione Ctrl + G en cualquier lugar de Excel.

Ejecute el código con la tecla F5 o manualmente como se muestra en la siguiente captura de pantalla. Entonces, verifiquemos la salida de este código.

Tipos de bucles VBA en Excel

Como programador, nunca te interesará escribir líneas repetitivas que estén a punto de dar el mismo resultado. Te gustaría automatizarlo. Por lo tanto, veremos varios bucles Excel VBA y cómo usarlos usando algunos ejemplos.

Tipo # 1 - VBA para el próximo bucle

For Next VBA loop nos permite recorrer el rango de celdas y realizar la misma tarea para cada celda especificada en el ciclo. El número inicial y el número final deben indicarse aquí.

código:

 Sub loop1 () Para i = 1 a 10 celdas (i, 1) .Value = i Next i End Sub 

Este código proporciona exactamente el mismo resultado que el anterior. Sin embargo, lo más notable de este código es la reducción de varias líneas. Hemos reducido el código de 12 líneas a simplemente un código con 5 líneas.

En este código, loop1 es el nombre de la macro. El ciclo for comienza desde i = 1, imprime el valor de i (es decir, 1) debajo de la celda de Excel y en Siguiente, vuelve al inicio del ciclo for y hace que i = 2 imprima el valor de i (es decir, 2) en la celda siguiente y así sucesivamente hasta que el código alcance su último valor, es decir, 10. Tan pronto como el código alcance el último valor de i (10), el código se cancelará por falta de disponibilidad de cualquier valor entero por encima de 10.

Ejecute el código con la tecla F5 o manualmente. Para que pueda ver la salida a continuación.

Tipo # 2 - VBA para bucle con avance

Como ha visto en el ejemplo del bucle anterior, estaba teniendo un aumento en 1 paso. Por defecto, el valor del paso se considera como 1 en VBA. Sin embargo, ¿es posible establecer un paso propio? Suponga que solo quiere ver los números pares entre 1 y 20. ¿Cómo se puede hacer?

Como sugiere la matemática general, los números que están a una distancia de 2 entre sí (a partir del primer número par 2) se consideran números pares, ¿verdad?

Aplicaremos la misma lógica. Vea el código a continuación para su referencia.

Código:

 Sub ForwardStep () For i = 2 To 20 Step 2 Cells (i, 1) .Value = i Next i End Sub 

Para los valores que comienzan desde 2, este bucle permite imprimir 2, 4, 6, 8 … 20 en celdas de Excel posteriores. El paso 2 ha dado explícitamente, de modo que a partir del número 2, el código saltará al siguiente número con el paso 2 (es decir, se imprimirá 4) y así sucesivamente. Este proceso continuará hasta que ocurra 20 en una celda. Tan pronto como ocurra 20 en una celda, el ciclo finalizará automáticamente.

Ejecute el código con la tecla F5 o manualmente. Para que pueda ver la salida a continuación.

Tipo # 3 - VBA para bucle con paso atrás

De la misma manera que para for loop con paso adelante, podemos usar for loop con paso atrás. Por ejemplo, ¿qué pasa si establecemos nuestro paso hacia atrás como -2 y ejecutamos un bucle for desde los valores 20 a 2?

Veremos cómo funciona.

código:

 Sub BackwardStep () For i = 20 To 2 Step -2 Debug.Print i Next i End Sub 

Después de ejecutar el código, podemos ver el resultado en la ventana Inmediato. Para abrir la ventana Inmediato, presione Ctrl + G en cualquier lugar de Excel.

Como hemos dado un punto de inicio del bucle como 20 y un punto final como 2 con el paso -2, el bucle comienza desde 20 y en el paso de -2 pasa al siguiente número que es -18 y así sucesivamente. Tan pronto como el bucle alcanza el valor 2, se termina automáticamente y el último valor se imprimirá como 2.

Tipo # 4 - VBA anidado para bucle

También podemos anidar el bucle For. Sin embargo, no se sugiere anidar el mismo bucle más de tres veces en un código (puede considerarse como un error en la lógica).

Consulte el siguiente código para el bucle anidado.

Código:

 Sub NestedFor () Para i = 1 a 10 Para j = 1 a 2 celdas (i, j) .Value = i * j Next j Next i End Sub 

En este ejemplo, en i = 1 y j = 1, la macro coloca el valor de i * j (1 * 1) en la intersección de la fila i = 1 y la columna j = 1 (es decir, la celda A1) y pasa al siguiente valor de j (2) manteniendo i = 1. En la intersección de la fila i = 1 y la columna j = 2 (es decir, la celda B1), la macro ingresa el valor de I * j (1 * 2). El bucle ignora el siguiente valor de j ya que j varía solo de 1 a 2 y pasa al siguiente valor de i.

Para i = 2 y j = 1, la macro ingresa el valor de i * j (2 * 1) en la intersección de la 2da fila y la 1ra columna (es decir, la celda A2) y continúa. Hasta el rango de i y j.

Ejecute el código con la tecla F5 o manualmente como se muestra en la siguiente captura de pantalla. Para que pueda ver la salida a continuación.

Tipo # 5 - VBA Do While Loop

El bucle Do While es uno de los bucles más interesantes en VBA. Le permite verificar la condición y escribir la salida (DO), cuando se cumple una determinada condición o conjunto de condiciones (o la condición / s es / son VERDADERAS).

Vea el código a continuación:

Código:

 Sub do_whileloop () Dim i As Integer i = 1 Do While i <= 10 Cells (i, 1) .Value = i * ii = i + 1 Loop End Sub 

Este bucle funciona de la siguiente manera:

Para los valores de i de 1 (i = 1 inicialmente) a 10, calcula i * i (es decir, el valor al cuadrado para cada valor entero de i) y lo ingresa debajo de la celda 1 a 10 respectivamente. La salida no es más que los valores al cuadrado de los enteros 1 a 10. Por favor, eche un vistazo más de cerca a Loop bajo este código. Es obligatorio agregarlo, de lo contrario, el sistema disparará un error.

Ejecute el código con la tecla F5 o manualmente. Para que pueda ver la salida a continuación.

Estos son algunos de los ejemplos de bucles VBA que he intentado tener cuidado en este artículo. Espero que sea lo suficientemente preciso como para aclarar algunos conceptos.

Cosas para recordar

  • Mientras usa el bucle for con un paso hacia atrás, asegúrese de que su número inicial debe ser mayor que su número final y viceversa.
  • En Do while loop, asegúrese de estar usando Loop para cerrar el do while antes de finalizar todo el Código VBA. De lo contrario, el sistema arroja un error del compilador con el mensaje de error "Hacer sin bucle".

Puede descargar esta plantilla de Excel de VBA Loops aquí - Plantilla de Excel de VBA Loops

Artículos recomendados

Esta ha sido una guía para los bucles Excel VBA. Aquí discutimos los Tipos de bucles VBA de Excel y cómo usarlos junto con algunos ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Función VBA en Excel
  2. Función VBAOKUP VBA
  3. Atajos de teclado de Excel
  4. Fórmula del percentil de Excel

Categoría: