_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 código 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 instrucción exit.

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.

The For … Next loop has the following syntax:

For counter = start_counter To end_counter

'Do something here (your code)

Next counter

De hecho, estamos creando un ciclo que utiliza un contador de variables como el «cronometrador» del ciclo. Lo configuramos en un valor igual a start_counter al comienzo del ciclo y luego lo incrementamos en 1 durante cada ciclo hasta que cumpla con la condición final. El ciclo se ejecutará hasta que el valor del contador sea 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 trabajo 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 de VB

img1

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

Sub Loop1()

Dim StartNumber As Integer

Dim EndNumber As Integer

EndNumber = 5



For StartNumber = 1 To EndNumber

MsgBox StartNumber & " is " & "Your StartNumber"

Next StartNumber

End Sub

img2

Explicación del código:

El código de VBA necesita que asigne un valor a StartNumber, donde EndNumber son variables que se declaran como enteros como el punto de partida para su ciclo Estos valores pueden ser cualquier número y tenemos EndNumber ya que 5 StartNumber se inicia en 1 For StartNumber = 1 To EndNumber significa que el código comenzará de 1 (StartNumber) a 5 (EndNumber)

  • MsgBox StartNumber & «is» & «Your StartNumber» mostrará el siguiente cuadro de mensaje

img3

Loop2 (Rellenar valores)

Sub Loop2()

'Fills cells A1:A56 with values of X by looping' --- Comment

'Increase value of X by 1 in each loop' --- Comment

Dim X As Integer

For X = 1 To 56

Range("A" & X).Value = X

Next X

End Sub

img4

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) .Valor = X; esta línea almacenará el valor de X y pasará al rango A1 a A56

img5

Loop3 (Rellena las celdas con color de fondo)

Sub Loop3()

' Fills cells B1:B56 with the 56 background colours' --- Comment

Dim X As Integer

For X = 1 To 56

Range("B" & X).Select

With Selection.Interior

.ColorIndex = X

.Pattern = xlSolid

End With

Next X

End Sub

img6

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, con Selección. Interior seleccionará el índice de color interior y tomará el valor de X de ese índice de color de modo que 1 pertenece al color negro; 2 pertenece al color blanco; 3 para rojo y así sucesivamente

img7

Bucle 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()

' Fills every second cell from C1:C50 with values of X' --- Comment

Dim X As Integer

For X = 1 To 50 Step 2

Range("C" & X).Value = X

Next X

End Sub

img8

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

img9

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 bajos a valores 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 por defecto, sin embargo, se puede establecer en un número en orden inverso.

Sub Loop5()

' Fills cells from D1:D50 with values of X' --- Comment

' In this case X decreases by 1' --- Comment

Dim X As Integer, Row As Integer

Row = 1



For X = 50 To 0 Step -1

Range("D" & Row).Value = X

Row = Row + 1

Next X

End Sub

img10

Explicación del código:

Hemos asignado X & Row como número 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» y Fila) .Valor = X; esta línea almacenará el valor de X y pasará al rango D1 a D50

img11

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

En el ejemplo anterior del bucle For, 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()

' Fills every second cell from E1:E100 with values of X' --- Comment

' In this case X decreases by 2' --- Comment

Dim X As Integer, Row As Integer

Row = 1

For X = 100 To 0 Step -2

Range("E" & Row).Value = X

Row = Row + 2

Next X

End Sub

img12

Explicación del código:

Hemos asignado X & Row como número 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» y Fila) .Value = X; esta línea almacenará el valor de X y pasará al rango E1 a E100

img13

Bucle 7 (Para bucle con condición IF: llena las celdas a partir de la 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()

' Starts to fill cells F11:F100 with values of X' --- Comment

' This will exit from the loop after 50' --- Comment

Dim X As Integer

For X = 11 To 100

Range("F" & X).Value = X

If X = 50 Then

MsgBox ("Bye Bye")

Exit For

End If

Next X

End Sub

img14

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

img15

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

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 a [email protected]