7 ejemplos de bucles for en Microsoft Excel VBA

Anonim

Si está escribiendo un programa VBA y desea ejecutar la misma tarea varias veces, puede hacerlo utilizando VBA para bucles. VBA es un lenguaje de programación secuencial. Cada línea de código se ejecuta de arriba a abajo hasta que no haya más líneas de código para leer. Si desea volver atrás y realizar una tarea, entonces debe forzar usando el código de macro. Obtienes resultados con loop.

El bucle For en VBA es uno de los tipos de bucle más comunes. El bucle For tiene dos formas: For Next y For Each In Next. El ciclo For se usa normalmente para moverse secuencialmente a través de una lista de elementos o números. Para finalizar el ciclo For en cualquier punto dado, podemos usar la declaración de salida. For Loop dará vueltas y vueltas hasta que cumpla con la condición final. Una vez que se cumple la condición final, el flujo de programación continuará hacia abajo, en su dirección natural.

El bucle For… Next tiene la siguiente sintaxis: For counter = start_counter To end_counter 'Haz algo aquí (tu código) Siguiente contador 

De hecho, estamos creando un bucle que usa variable encimera como el "cronometrador" del ciclo. Lo ponemos en un valor igual a start_counter al comienzo del ciclo y luego increméntelo en 1 durante cada ciclo hasta que cumpla con la condición final. El ciclo se ejecutará hasta el momento en que el valor del encimera se vuelve igual a end_counter. El ciclo se ejecuta por última vez cuando ambos valores anteriores coinciden y luego el ciclo se detiene.

Todo lo anterior puede resultar confuso para algunas personas, así que preparémonos y comencemos a aprender For Loop en Excel con algunos ejemplos.

  • Cree un nuevo libro de Excel y luego guárdelo con la extensión .xlsm
  • Para iniciar la pantalla del editor de Visual Basic, use ALT + F11
  • Insertar nuevo módulo
  • Copie el siguiente código en el módulo estándar VB

Lazo 1 (Visualización del número con msgbox)

Sub Loop1 () Dim StartNumber As Integer Dim EndNumber As Integer EndNumber = 5 Para StartNumber = 1 To EndNumber MsgBox StartNumber & "es" & "Su StartNumber" Siguiente StartNumber End Sub 

Explicación del código:

  • El código de VBA necesita que asignes un valor a StartNumber, donde EndNumber son variables que se declaran como enteros como punto de partida para tu bucle
  • Estos valores pueden ser cualquier número y tenemos EndNumber como 5
  • StartNumber se inicia en 1
  • Para StartNumber = 1 To EndNumber significa que el código comenzará desde 1 (StartNumber) a 5 (EndNumber)
  • MsgBox StartNumber & "is" & "Your StartNumber" mostrará el siguiente cuadro de mensaje

Loop2 (valores de relleno)

Sub Loop2 () 'Rellena las celdas A1: A56 con valores de X haciendo un bucle' --- Comentario 'Aumenta el valor de X en 1 en cada bucle' --- Comentario Dim X como entero para X = 1 a 56 Rango ("A "& X) .Value = X Siguiente X End Sub 

Explicación del código:

  • Hemos asignado X como un número entero
  • Para X = 1 a 56; esto comenzará con 1 y continuará hasta 56 con un incremento de 1 cada vez
  • Rango ("A" y X) .Value = X; esta línea almacenará el valor de X y pasará al rango de A1 a A56

Loop3 (Rellenar celdas con color de fondo)

Sub Loop3 () 'Rellena las celdas B1: B56 con los 56 colores de fondo' --- Comentar Dim X como entero para X = 1 a 56 Rango ("B" y X) .Seleccione con selección.Interior .ColorIndex = X .Patrón = xl Extremo sólido con siguiente X End Sub 

Explicación del código:

  • Hemos asignado X como un número entero
  • Para X = 1 a 56 comenzará con 1 y continuará hasta 56 con un incremento de 1 cada vez
  • Rango ("B" y X) .Seleccionar; esta línea almacenará el valor de X y seleccionará la celda B1 hasta B56
  • Las siguientes 4 líneas, es decir, With Selection.Interior seleccionará el índice de color interior y tomará el valor de X de ese índice de color de modo que 1 pertenezca al color negro; 2 pertenece al color blanco; 3 para rojo y así sucesivamente

Lazo 4 (valores de relleno con incremento de 2)

De forma predeterminada, el valor de Paso es 1 hacia adelante, sin embargo, se puede establecer en un número superior a 1.

Sub Loop4 () 'Llena cada segunda celda de C1: C50 con valores de X' --- Comentario Dim X como entero para X = 1 a 50 Paso 2 Rango ("C" y X) .Valor = X Siguiente X Fin Sub 

Explicación del código:

  • Hemos asignado X como un número entero
  • Para X = 1 a 50 Paso 2; esto comenzará con 1 en X hasta 50 con un incremento de 2 cada vez
  • Rango ("C" y X) .Value = X; esta línea almacenará el valor de X y pasará al rango C1 a C50

Bucle 5 (VBA para bucle en reversa con instrucción STEP)

No es necesario que el contador en el ciclo For solo se mueva de valores más bajos a más altos; en cambio, el bucle For puede ejecutarse hacia atrás, es decir, valores altos a bajos.

Aunque el valor de Paso es 1 hacia adelante de forma predeterminada, sin embargo, se puede establecer en un número en orden inverso.

Sub Loop5 () 'Llena las celdas de D1: D50 con valores de X' --- Comentario 'En este caso, X disminuye en 1' --- Comentario Dim X como entero, fila como entero Fila = 1 Para X = 50 a 0 Paso -1 Rango ("D" y Fila) .Valor = X Fila = Fila + 1 Siguiente X Fin Sub 

Explicación del código:

  • Hemos asignado X & Row como entero
  • La fila contiene el valor 1
  • Para X = 50 a 0 Paso -1; esto comenzará desde 50 con una disminución de 1 en X hasta 0
  • Rango ("D" & Fila) .Value = X; esta línea almacenará el valor de X y pasará al rango D1 a D50

Bucle 6 (llena cada segunda celda en reversa con el PASO-2)

En el ejemplo de bucle For anterior, podemos usar el paso y el orden para ver si el bucle For funciona en dirección hacia adelante o hacia atrás.

Sub Loop6 () 'Llena cada segunda celda de E1: E100 con valores de X' --- Comentario 'En este caso X disminuye en 2' --- Comentario Dim X como entero, fila como entero Fila = 1 Para X = 100 Hasta 0 Paso -2 Rango ("E" y Fila). Valor = X Fila = Fila + 2 Siguiente X Fin Sub 

Explicación del código:

  • Hemos asignado X & Row como entero
  • La fila contiene el valor 1
  • Para X = 100 a 0 Paso -2; esto comenzará desde 100 con una disminución de 2 en X hasta 0
  • Rango ("E" & Fila) .Value = X; esta línea almacenará el valor de X y pasará al rango E1 a E100

Bucle 7 (Para bucle con condición IF: llena las celdas a partir de una celda específica)

Esto llenará las celdas de la celda F11 con el valor 11 hasta que X cumpla con la condición IF

Sub Loop7 () 'Comienza a llenar las celdas F11: F100 con valores de X' --- Comentario 'Esto saldrá del bucle después de 50' --- Comentario Dim X como entero para X = 11 a 100 Rango ("F" & X) .Value = X If X = 50 Then MsgBox ("Bye Bye") Salir para finalizar si sigue X End Sub 

Explicación del código:

  • Hemos asignado X como un número entero
  • Para X = 11 a 100; comenzará desde 11 con incremento de 1 en X hasta que la condición cumpla
  • Rango ("F" y X) .Value = X; esta línea almacenará el valor de X y pasará al rango F11 hasta que la condición cumpla

  • Después de ingresar el valor 50 en la celda F50, se mostrará el siguiente cuadro de mensaje

Conclusión: Con los 7 ejemplos anteriores, podemos aplicar For loop en nuestra parte regular o en cualquier parte de automatización.

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.
Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico