El bucle es una de las técnicas de programación más poderosas. Un bucle 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:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

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 vuelve 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:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

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

Bucle doble en Excel VBA

Explicación: Para i = 1 y j = 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:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Explicación: El único cambio realizado en comparación con el código para el ciclo doble es que hemos agregado un ciclo más y hemos agregado 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, el bucle Do While. 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:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

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 sume 1. 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:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

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

Bucle Do while avanzado

Explicación: siempre que Celdas (i, 1). El valor 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 la 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>
Capítulo siguiente: Errores de macro