Buscar en Ayuda Excel:

Bucles For...Next en Excel

Éstas son las construcciones de bucle más comunes. Todo lo que se encuentre entre For y Next se ejecuta múltiples veces. Cada vez que se ejecuta el código, una determinada variable de contador (especificada en el parámetro For tiene un valor diferente:

For i = 1 to 10
Cells ( i,i).Value = i
Next i

Cuando este programa se empieza a ejecutar, hemos asignado a la variable de contador un nombre de i. La primera vez que se ejecuta el bucle, i es igual a 1, por lo que la celda en la Fila 1, Columna 1 estará establecida en 1 como se muestra debajo:

Bucle For NextBucle For Next

Miremos más detenidamente lo que sucede cuando VBA llega a la línea que dice Next i. Ante de ejecutar esta línea, la variable i es igual a 1. Durante la ejecución de Next i, VBA debe tomar una decisión. VBA añade 1 a la variable i y la compara con el valor máximo en la cláusula To del parámetro For. Si se encuentra dentro de los límites especificados en la cláusula To, entonces el bucle no se acaba. En este caso, el valor de i se incrementa a 2. La ejecución del código vuelve entonces a la primera línea del código detrás del parámetro For.

A medida que continúa el proceso, el parámetro Next i avanza i hasta 3, 4, etc. En el décimo paso por el bucle, la celda en Fila 10, Columna 10 tiene asignado un valor de 10.

En este momento VBA tiene que tomar una decisión. Añade 1 a la variable i. i es ahora igual a 11, que es mayor que el límite en el bucle For… Next. VBA mueve la ejecución a la siguiente línea en la macro detrás del parámetro Next. En el caso de que sientas la tentación de utilizar la variable i más adelante en la macro, es importante darse cuenta de que podría incrementar más allá del límite especificado en la cláusula To del parámetro For.

Al final del bucle , obtendremos el resultado que se muestra abajo:

Bucle For Next: SoluciónBucle For Next: Solución

El uso común para un bucle de estas características es pasar por todas las filas de un conjunto de datos y decidir realizar alguna acción en base a un criterio. Por ejemplo, si se desea marcar todas las filas que tienen una cantidad positiva en la columna F, podrías utilizar este bucle:

For i = 2 To 10
    If Cells(i, 6).Value > 0 Then
      Cells(i, 8).Value = "Cantidad Positiva"
      Cells(i, 1).Resize(1, 8).Interior.ColorIndex = 4
    End If
Next i

Este bucle comprueba cada elemento de datos desde la fila 2 a la 10. Si hay un número positivo en la columna F, entonces la columna H de esa fila tendrá una nueva etiqueta y las celdas en las columnas A:H de la fila tendrán un color verde. Después de ejecutar esta macro, los resultados son estos:

Bucle For Next: Otro ejemploBucle For Next: Otro ejemplo


Technorati Tags:
Distribuir contenido


Cursos Excel · Manual básico · Tutoriales Excel · Foro Excel · Enlaces y recursos · VBA Excel · Plantillas Excel · Nota legal · Contacta