Bucles de VBA - Lista de los 4 tipos principales de bucles (con ejemplos)

Tabla de contenido

Bucles de Excel VBA

Los bucles se usan comúnmente en todos los lenguajes de programación, donde existe una cierta necesidad o un criterio cuando necesitamos un cierto código para ejecutar ciertas veces usamos bucles para esos códigos, ahora hay muchos tipos de bucles en VBA como Do while, Do until, For Loop y For each, estos bucles ayudan a que el código se ejecute hasta que se cumpla la condición.

Permítanme hacer esta declaración desde el principio. "Si desea dominar en VBA, debe completar el concepto de loops en macros VBA".

Loop no es más que atravesar un rango de celdas, atravesar un rango de objetos para repetir la misma tarea para la colección de celdas u objetos. En lugar de realizar la tarea en un conjunto separado de líneas de códigos mediante el uso de bucles, podemos acortar la longitud del código al mínimo posible.

Lista de los 4 tipos principales de bucles VBA

  1. Para el siguiente bucle
  2. Para cada bucle
  3. Hacer mientras bucle
  4. Hacer hasta bucle

Veamos cada uno de estos tipos en detalle.

Tipo # 1 - Para el siguiente bucle

El bucle For Next nos permite recorrer el rango de celdas y realizar la misma tarea para cada celda especificada en el bucle. Aquí necesitamos decir el número inicial y el número final.

Ejemplo

Por ejemplo, si desea insertar números de serie del 1 al 10, a continuación se muestra la forma tradicional de insertar números de serie.

Sub SerialNumber ()

Rango ("A1"). Valor = 1
Rango ("A2"). Valor = 2
Rango ("A3"). Valor = 3
Rango ("A4"). Valor = 4
Rango ("A5"). Valor = 5
Rango ("A6"). Valor = 6
Rango ("A7"). Valor = 7
Rango ("A8"). Valor = 8
Rango ("A9"). Valor = 9
Rango ("A10"). Valor = 10

End Sub

Se ve bien, ¿no? Pero el problema aquí es que solo necesitamos 10 veces para realizar esta tarea. Pero imagina qué pasa si quieres insertar 100 o 1000 números, ¿puedes escribir el código 100 o 1000 líneas? Es imposible, y ahí es donde la belleza del bucle For Next resulta útil.

Paso 1: Abra la macro y declare la variable i como Integer.

Sub Insert_Serial_Number ()

Dim i como entero

End Sub

Paso 2: Ahora abre el bucle For . Aquí mencione el inicio y el final del ciclo usando la variable i.

Paso 3: Ahora escribe el código que deseas realizar. Necesitamos insertar números del 1 al 10 en las celdas A1 a A10. En lugar de aplicar el método Range, aplique el método Cells.

Está preguntando el número de fila ya que ya hemos declarado la variable i como un entero al principio. Su valor es 1. Así que menciono que me gusta su número de fila y 1 como su número de columna.

Ahora el valor del valor actual de la celda debe ser uno, en lugar de mencionar el número uno, mencione i como el valor. Porque cada vez que se ejecuta el bucle, el valor i aumentará en 1.

Ahora presione la tecla F8 para pasar a una línea por una. Presione F8 hasta que llegue al bucle For.

Este color amarillo es la indicación de que la línea de código seleccionada está a punto de ejecutarse. Coloque un cursor en I y mostrará el valor como cero.

Ahora presione una vez más la tecla F8 y coloque un cursor en i y ahora el valor es 1.

Entonces, los valores de i en todas partes ahora son iguales a 1. “ Celdas (I, 1) .valor = I” significa Celdas (1, 1) .valor = 1.

Presione la tecla F8 y vea el valor en la celda A1. Debe ver 1 en la celda A1.

Ahora, si presiona la tecla F8, volverá al ciclo For una vez más porque el límite final de la variable i es 10. Esta vez , el valor I será 2.

Para el siguiente ciclo se ejecutará 10 veces e insertará los números de serie del 1 al 10.

Tipo n. ° 2: para cada bucle

For Cada bucle en VBA es para recorrer una colección de objetos. For next loop recorre las celdas y realiza la tarea, y For Each recorre objetos como hojas de trabajo, gráficos, libros de trabajo, formas.

Usando este ciclo, podemos revisar todas las hojas de trabajo y realizar algunas tareas. Por ejemplo, puede recorrer todas las hojas de trabajo para ocultar y mostrar hojas de trabajo.

Ejemplo 1

Si desea ocultar todas las hojas de trabajo excepto la hoja en la que está trabajando, ¿cómo lo hará? Si tiene 20 hojas en el libro de trabajo, es un proceso que requiere mucho tiempo. Pero con FOR CADA bucle, podemos realizar esta tarea.

Tengo 5 hojas y quiero ocultar todas las hojas excepto la hoja "Principal" debajo del código que haría la tarea por mí.

Sub To_Hide_All_Sheet ()

Dim Ws como hoja de trabajo

Para cada W en ActiveWorkbook.

Si Ws.Name "Main", entonces
Ws.Visible = xlSheetVeryHidden
End If

Siguiente Ws

End Sub

Ejemplo # 2

Si desea mostrar todas las hojas ocultas, el siguiente código hará el trabajo por usted.

Sub To_UnHide_Specific_Sheet ()

Dim Ws como hoja de trabajo

Para cada W en ActiveWorkbook.

Ws.Visible = xlSheetVisible

Siguiente Ws

End Sub

Tipo # 3 - Hacer mientras bucle

El ciclo Do While realiza la tarea mientras la condición dada es VERDADERA, y una vez que la condición se vuelve FALSA, dejará de repetirse. A diferencia de los otros dos bucles, Do While prueba la condición al final del bucle, no al principio.

Le mostraré el ejemplo de cómo insertar números de serie con el bucle Do While.

Sub Do_While_Example ()

Dim i como entero

i = 1
Hacer mientras i <11
celdas (i, 1) .Valor = i
i = i + 1
bucle

End Sub

El ciclo anterior se ejecutará mientras i sea ​​menor que 11 y siga insertando los números de serie. En el momento en que supere los 11, dejará de girar.

Tipo # 4 - Hacer hasta bucle

A diferencia del bucle Do While, el bucle Do until no se ejecuta mientras la condición es TRUE; más bien, se repite hasta que la condición es FALSA. Por ejemplo, mire el siguiente código.

Sub Do_Until_Example ()

Dim i como entero

i = 1
Hacer hasta i = 11
celdas (i, 1) .Valor = i
i = i + 1
Bucle

End Sub

La única diferencia entre el bucle Do While y Do until es el operador que especificamos. En Do, si bien mencionamos ejecutar el bucle mientras i es menor que (<), 11 pero en el bucle do hasta, mencionamos ejecutar el bucle hasta que i sea ​​igual a (=) a 11.

Cosas para recordar

  • Hay un ejemplo de bucle Excel VBA más avanzado, pero cubriremos cada uno de ellos en un artículo separado en detalle.
  • Cada bucle es para variables de objeto.
  • Aunque Do While & Do until parece igual, mencionar la condición es muy importante.
  • Los bucles son conceptos muy importantes.

Articulos interesantes...