/ / Excel VBA Loop

Excel VBA Loop

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

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

Bucle único

Puede usar 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:

Single Loop 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 salta de nuevo 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 siempre sangrar (tabular) 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:

Doble lazo 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 alcanza el siguiente j, aumenta j con 1 y salta de nuevo 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 salta de nuevo 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 usar un bucle 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 bucle doble es que hemos agregado un bucle más y hemos agregado las 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 Excel para ver este resultado.

Hacer mientras bucle

Además del bucle For Next, hay otros bucles en Excel VBA. Por ejemplo, el 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:

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 inferior a 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 "=" significa se convierte en. 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 numero 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:

Avanzado Do While Loop

Explicación: mientras Células (i, 1).El valor no está vacío (<> 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 i y la columna 1 .VBA de Excel se detiene cuando i es igual a 7 porque las celdas (7, 1) .El valor está vacío. Esta es una excelente manera de recorrer cualquier cantidad de filas en una hoja de cálculo.

Lea también: