VBA While Loop

VBA While Loop es un concepto importante y poderoso que quizás hayas visto en la mayoría de los lenguajes de programación. Si domina este concepto bajo VBA, podrá preparar scripts potentes que funcionan con datos de hoja de cálculo de maneras totalmente diferentes y convenientes. En este artículo, prepárate para explorar el mundo de los diferentes bucles, junto con múltiples ejemplos que vienen por tu ayuda.

El propósito del ciclo While es repetir un cierto bloque de declaraciones sujeto a que se cumpla una condición. Más precisamente, el ciclo while repite la declaración correspondiente mientras una condición es Verdadera. Una vez que la condición se vuelve Falsa (No cumple), el ciclo termina por sí mismo.

Básicamente, hay dos tipos de bucles while en Microsoft Excel VBA:

  • VBA While-Wend Loop
  • VBA Do-While Loop

VBA While-Wend Loop existe para hacer que el código sea compatible con una versión anterior de códigos. VBA Do-While es la versión actualizada de while loop que es más flexible y estructurada en comparación con la anterior y se recomienda que sea utilizada por la comunidad de Microsoft.

Por si acaso, te estás preguntando qué significa Wend, es una forma abreviada de While End y funciona igual.

Ejemplos de VBA While Loop

Profundicemos en la guía paso a paso de los diferentes tipos de VBA While Loops.

Puede descargar esta plantilla VBA While Loop Excel aquí - Plantilla VBA While Loop Excel

Ejemplo 1

VBA While-Wend Loop

Sintaxis:

Tomemos un ejemplo para ver esto de una mejor manera.

  • Defina un subprocedimiento para crear una macro en un nuevo módulo.

Código:

 Sub WhileEx1 () End Sub 

  • Establezca dos variables Número a Uno y Suma a Cero.

Código:

 Sub WhileEx1 () Número = 1 Sum = 0 End Sub 

  • Establezca una condición while para la variable Número.

Código:

 Sub WhileEx1 () Número = 1 Sum = 0 While Número <= 10 End Sub 

  • Agregue declaraciones que se ejecutarán para esta condición while.

Código:

 Sub WhileEx1 () Número = 1 Sum = 0 While Número <= 10 Sum = Sum + Number Number = Number + 1 End Sub 

  • Agregue Debug.Print Sum para que la suma de los primeros 10 números naturales pueda imprimirse uno por uno en la Ventana Inmediata.

Código:

 Sub WhileEx1 () Número = 1 Sum = 0 While Número <= 10 Sum = Sum + Number Number = Number + 1 Debug.Print Sum End End Sub 

  • Finalmente, finalice el ciclo While con la declaración Wend.

Código:

 Sub WhileEx1 () Número = 1 Sum = 0 While Número <= 10 Sum = Sum + Number Number = Number + 1 Debug.Print Sum Wend End Sub 

  • Presione F5 o el botón Ejecutar para ejecutar este código y ver el resultado.

En este código, la variable suma se establece en cero. Por lo tanto, cada vez que el Número se incrementa en 1 hasta llegar a 10 (usando el ciclo while), la variable de suma agregará la suma anterior con el número actual y lo mostrará debajo de la Ventana Inmediata fila por fila o suma gradual que pueda decir.

Ejemplo # 2

VBA Do-While Loop

Do-While Loop When Condición se verifica antes de que comience el loop

Hay dos formas en que se puede ejecutar el ciclo while.

  • Puede agregar una condición antes de que comience el bucle (es lo mismo que el bucle While-Wend). Aquí, no habría iteración del ciclo si la condición falla por primera vez.
  • Puede agregar la condición al final del ciclo para verificar. En este caso, habrá al menos una iteración del bucle antes de que falle la condición.

Sintaxis:

Tomemos un ejemplo para aclarar las cosas.

  • Inserte un nuevo módulo y defina un nuevo subprocedimiento para definir una macro.

Código:

 Sub WhileEx2 () End Sub 

  • Defina una nueva variable I como un entero. E inicie su valor a 1.

Código:

 Sub WhileEx2 () Dim i Dim Integer i = 1 End Sub 

  • Use Do-While para agregar una condición al comienzo del ciclo.

Código:

 Sub WhileEx2 () Dim i Dim Integer i = 1 Do While i <= 10 End Sub 

  • Agregue sentencias para ejecutar siempre que la condición sea verdadera. Agregue la siguiente línea de código a la macro.

Código:

 Sub WhileEx2 () Dim i Dim Integer i = 1 Do While i <= 10 celdas (i, 1) .Value = i * i End Sub 

Esta declaración permite que la i-ésima fila de la primera columna almacene el valor al cuadrado de los números.

  • Agregue una declaración más que permita un incremento en i en 1 en cada iteración del bucle.

Código:

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

  • Complete este ciclo agregando la instrucción Loop al final de su código.

Veamos la solución de este código:

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 en las filas 1 a 10 de la columna 1 (es decir, la columna A) respectivamente . La salida no es más que los valores al cuadrado de los enteros 1 a 10.

  • Ejecute este código presionando F5 o el botón Ejecutar y vea la salida.

Puede ver los valores al cuadrado de los números naturales del 1 al 10 que se almacenan en cada celda por separado de la columna A.

Ejemplo # 3

Do-While Loop When Condición está marcada al final del bucle

Sintaxis:

Veamos un ejemplo para ver el bucle de una mejor manera.

  • Inserte un nuevo módulo y defina un nuevo subprocedimiento para almacenar una macro.

Código:

 Sub WhileEx3 () End Sub 

  • Defina un nuevo entero igual que en el ejemplo anterior y asígnele un valor inicial.

Código:

 Sub WhileEx3 () Dim i Dim Integer i = 1 End Sub 

  • Use una condición Do para agregar las declaraciones que se ejecutarán siempre que la condición sea verdadera.

Código:

 Sub WhileEx3 () Dim i Dim Integer i = 1 Do Cells (i, 2) .Value = i * ii = i + 1 End Sub 

Se recomienda utilizar espacios en blanco (tecla Tab) como una sangría que se muestra en el código anterior, lo que permite que el código se ejecute sin problemas y también define un buen formato de estructura para el código.

  • Use Loop while para agregar una condición que se verificará para que cada instrucción se ejecute.

Código:

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

  • Ejecute este código presionando F5 o el botón Ejecutar manualmente y vea la salida.

Verá la salida como se muestra en la figura anterior.

¿Cómo funciona este código en el backend?

El sistema multiplica el valor de i (a partir de 1) y se almacena en la segunda columna (Celdas (i, 2)) para cada fila, una por una. El código deja de ejecutarse tan pronto como el valor de la variable i alcanza 10. La salida puede ser la misma, lo que lógicamente significa que ambos códigos funcionan igual. Pero la principal diferencia está en compilar el código. En el último ejemplo, la condición ya estaba allí, y el sistema sabía hasta qué número tenía que ir. Sin embargo, en este código, el sistema desconoce la condición en el momento de la ejecución de las declaraciones y ejecuta la iteración una por una. Mientras la condición sea falsa, el código dejó de ejecutarse.

Cosas para recordar sobre VBA While Loop

  • El bucle While-Wend es obsoleto y solo debe ser compatible con versiones anteriores de códigos. Deberías usar un bucle Do-While en su lugar.
  • El ciclo Do-While es más flexible y bien estructurado en comparación con el ciclo While-Wend.
  • El ciclo Do-while se puede usar de dos maneras, en un caso, puede agregar la condición primero para verificarla y luego agregar declaraciones que satisfagan la condición. De otra manera, puede agregar declaraciones primero y luego agregar la condición a verificar.
  • Se recomienda usar sangrías en bucles para que el código pueda ser más dinámico y más fácil de leer.

Artículos recomendados

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

  1. ¿Cómo usar la función FIND en Excel?
  2. ¿Cómo usar la función VBA TRIM?
  3. Matrices de VBA | Tutorial completo
  4. ¿Cómo usar el caso VBA Select?

Categoría: