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 EnteroParai = 1A6
Celdas (i, 1) .Valor = 100
PróximoI
Resultado al hacer clic en el botón de comando en la hoja:
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:
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 EnteroParac = 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 ExcelNingunoIComoEntero
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:
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.
3. Coloque un Botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:
NingunoIComoEnteroi = 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:
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.
Ir al capítulo siguiente: Errores macro