Looping es una de las técnicas más poderosas de programación. Un bucle en Excel VBA le permite colocar a través de un rango de celdas con líneas tan sólo unos códigos.

bucle simple

Se puede utilizar un único bucle de bucle a través de un unidimensional rango de celdas.

Coloque un enlace: / VBA crear a un macro-#-botón de comando [botón de comando] en su hoja de trabajo y añadir las siguientes líneas de código:

Dim i As Integer

For i = 1 To 6

Cells(i, 1).Value = 100

Next i

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

Single Loop in Excel VBA

Explicación: Las líneas de código entre For y Next se ejecutará en seis ocasiones. Para i = 1, Excel VBA introduce el valor 100 en la célula en la intersección de la fila 1 y la columna 1. Cuando Excel VBA alcanza Siguiente i, se incrementa i con 1 y salta de nuevo a la instrucción For. Para i = 2, Excel VBA introduce el valor 100 en la célula en la intersección de la fila 2 y la columna 1, etc.

Nota: es una buena práctica para siempre guión (pestaña) el código entre las palabras For y Next. Esto hace que su código sea más fácil de leer.

Double Loop

Se puede utilizar un bucle doble de bucle a través de una gama de dos dimensiones de las células.

Coloque un enlace: / VBA crear a un macro-#-botón de comando [botón de comando] en su hoja de trabajo y añadir 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

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

Double Loop in Excel VBA

Explicación: para i = 1 y j = 1, Excel VBA introduce el valor 100 en la célula en la intersección de la fila 1 y la columna 1. Cuando Excel VBA alcanza Siguiente j, aumenta j con 1 y salta de nuevo a la instrucción for j . Para i = 1 y j = 2, Excel VBA introduce el valor 100 en la célula en la intersección de la fila 1 y la columna 2. A continuación, Excel VBA ignora Siguiente j porque j sólo se ejecuta de 1 a 2. Cuando Excel VBA alcanza Siguiente i , se incrementa i en 1 y salta de nuevo a la instrucción For i. Para i = 2 y j = 1, Excel VBA introduce el valor 100 en la célula en la intersección de la fila 2 y la columna 1, etc.

Triple Loop

Puede utilizar un triple bucle a bucle a través de los rangos de dos dimensiones en varias hojas de cálculo de Excel.

Coloque un enlace: / VBA crear a un macro-#-botón de comando [botón de comando] en su hoja de trabajo y añadir 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 añadido uno más de bucle y Hojas de trabajo añadido (c). delante de las células para obtener el rango de dos dimensiones en la primera hoja para c = 1, la segunda hoja para c = 2 y la tercera hoja de c = 3. Descargar el archivo de Excel para ver este resultado.

Do While Loop

Además del bucle para el próximo, hay otros bucles en Excel VBA. Por ejemplo, el bucle Do While. Código coloca entre Do While y Loop se repite mientras la parte después Do Mientras que es cierto.

  1. Coloque una enlace: / VBA-crear a un macro-comandos # botón [botón de comando] en su hoja de trabajo y añadir 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

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

Do While Loop

Explicación: el tiempo que i es menor que 6, Excel VBA introduce el valor 20 en la célula en la intersección de la fila i y la columna 1 y se incrementa i en 1. En Excel VBA (y en otros lenguajes de programación), el símbolo ‘= ‘se convierte en medios. Esto no quiere decir iguales. Así que i = i + 1 significa que se convierte en I + 1. En otras palabras: hay que tomar el valor actual de i y añadir 1 a la misma. 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).

  1. Entre algunos números en la columna A.

Any Number Of Rows

  1. Coloque un enlace: / VBA-crear a un macro-comandos # botón [botón de comando] en su hoja de trabajo y añadir 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

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

Advanced Do While Loop

Explicación: el tiempo que las células (i, 1) .Value no está vacío (<> medio que no igual a), Excel VBA entra en el valor en la celda en la intersección de la fila i y la columna 2, que es 10 mayor que el valor en la celda en la intersección de i fila y columna 1. Excel VBA se detiene cuando i es igual a 7, porque las células (7, 1) .Value está vacía. Esta es una gran manera de bucle a través de cualquier número de filas en una hoja de cálculo.