Vba

Lazo

Loop

Bucle único | Doble circuito | Bucle triple | Hacer mientras bucle

El bucle es una de las técnicas de programación más poderosas. A lazo en Excel VBA le permite recorrer un rango de celdas con solo unas pocas líneas de códigos.



Bucle único

Puede utilizar un solo bucle para recorrer un rango unidimensional de celdas.

Coloque un Botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

NingunoIComo Entero

Parai = 1A6
Celdas (i, 1) .Valor = 100
PróximoI

Resultado al hacer clic en el botón de comando en la hoja:

Bucle único en Excel VBA

Explicación: Las líneas de código entre For y Next se ejecutarán seis veces. Para i = 1, Excel VBA ingresa el valor 100 en la celda en la intersección de la fila 1 y la columna 1. Cuando Excel VBA llega a Siguiente i, aumenta i con 1 y regresa a la instrucción For. Para i = 2, Excel VBA ingresa el valor 100 en la celda en la intersección de la fila 2 y la columna 1, etc.

Nota: es una buena práctica sangrar (tabular) siempre el código entre las palabras Para y Siguiente. Esto hace que su código sea más fácil de leer.

Doble circuito

Puede utilizar un bucle doble para recorrer un rango bidimensional de celdas.

Coloque un Botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

¿Cómo presionas enter en Excel sin pasar a la siguiente celda?
NingunoIComo Entero, jComo Entero

Parai = 1A6
Paraj = 1A2
Celdas (i, j) .Valor = 100
Próximoj
PróximoI

Resultado al hacer clic en el botón de comando en la hoja:

Bucle doble en Excel VBA

Explicación: Para i = 1 yj = 1, Excel VBA ingresa el valor 100 en la celda en la intersección de la fila 1 y la columna 1. Cuando Excel VBA llega a Next j, aumenta j con 1 y vuelve a la instrucción For j . Para i = 1 y j = 2, Excel VBA ingresa el valor 100 en la celda en la intersección de la fila 1 y la columna 2. Luego, Excel VBA ignora Next j porque j solo se ejecuta de 1 a 2. Cuando Excel VBA llega a Next i , aumenta i con 1 y vuelve a la instrucción For i. Para i = 2 y j = 1, Excel VBA ingresa el valor 100 en la celda en la intersección de la fila 2 y la columna 1, etc.

Bucle triple

Puede utilizar un ciclo triple para recorrer rangos bidimensionales en varias hojas de cálculo de Excel.

Coloque un Botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

NingunocComo Entero, IComo Entero, jComo Entero

Parac = 1A3
Parai = 1A6
Paraj = 1A2
Hojas de trabajo (c) .Células (i, j) .Valor = 100
Próximoj
PróximoI
Próximoc

Explicación: El único cambio realizado en comparación con el código para el ciclo doble es que agregamos un ciclo más y agregamos Hojas de trabajo (c). delante de Celdas para obtener el rango bidimensional en la primera hoja para c = 1, la segunda hoja para c = 2 y la tercera hoja para c = 3. Descargue el archivo de Excel para ver este resultado.

Hacer mientras bucle

Además del bucle For Next, hay otros bucles en Excel VBA. Por ejemplo, Do While Loop. El código colocado entre Do While y Loop se repetirá siempre que la parte posterior a Do While sea verdadera.

1. Coloque un Botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

establecer un área de impresión en Excel
NingunoIComoEntero
i = 1

Hacer MientrasI<6
Celdas (i, 1) .Valor = 20
yo = yo + 1
Lazo

Resultado al hacer clic en el botón de comando en la hoja:

Hacer mientras bucle

Explicación: siempre que i sea menor que 6, Excel VBA ingresa el valor 20 en la celda en la intersección de la fila i y la columna 1 e incrementa i en 1. En Excel VBA (y en otros lenguajes de programación), el símbolo '= 'medios se convierte. No significa igual. Entonces i = i + 1 significa que i se convierte en i + 1. En otras palabras: tome el valor presente de i y agregue 1 a él. Por ejemplo, si i = 1, i se convierte en 1 + 1 = 2. Como resultado, el valor 20 se colocará en la columna A cinco veces (no seis porque Excel VBA se detiene cuando i es igual a 6).

2. Ingrese algunos números en la columna A.

Cualquier número de filas

3. Coloque un Botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

NingunoIComoEntero
i = 1

Hacer MientrasCeldas (i, 1) .Valor ''
Celdas (i, 2) .Valor = Celdas (i, 1) .Valor + 10
yo = yo + 1
Lazo

Resultado al hacer clic en el botón de comando en la hoja:

Bucle Do while avanzado

Explicación: siempre que Cells (i, 1) .Value no esté vacío (significa que no es igual a), Excel VBA ingresa el valor en la celda en la intersección de la fila i y la columna 2, que es 10 más alto que el valor en el celda en la intersección de la fila iy la columna 1. Excel VBA se detiene cuando i es igual a 7 porque Cells (7, 1) .Value está vacío. Esta es una excelente manera de recorrer cualquier número de filas en una hoja de trabajo.

1/11 Completado! Obtenga más información sobre los bucles>
Ir al capítulo siguiente: Errores macro



^