¿Quiere automatizar tareas repetitivas en Excel usando VBA? Aprenda a usar el ciclo For Each para manipular de manera eficiente los datos en sus hojas de cálculo.

Los bucles y VBA van de la mano, y también por una buena razón. Cuando se trata de objetos de Microsoft Office como libros de trabajo, hojas de trabajo y rangos, los bucles pueden ayudarlo a alternar entre cada uno de ellos con relativa facilidad.

Si bien más o menos todos los bucles de VBA funcionan bien con objetos, el bucle "for each" es una de las mejores opciones para trabajar con colecciones de objetos. Si es nuevo en Excel VBA y está buscando dominar el bucle for each, puede aprender de algunos de estos ejemplos rápidamente. Esto es todo lo que necesita saber sobre este bucle por excelencia.

Para la sintaxis de cada bucle

La sintaxis del bucle for each es bastante similar a la del bucle for habitual en Excel VBA. Aquí está la sintaxis:

Para cada variable_name en object_collection

[declaración]

[declaración]

[declaración]

Siguiente nombre_variable

instagram viewer

El ciclo comienza con la palabra clave "para cada"; puede usar cualquier nombre de variable, seguido de la colección de objetos. El objeto en el bucle for each puede ser celdas, rangos, hojas e incluso libros de trabajo. Tal es la belleza de este bucle; le brinda la flexibilidad de trabajar con diferentes colecciones de Excel.

El bucle recorre cada valor de colección y almacena la referencia en el nombre de variable definido. Después de la ejecución, VBA ejecuta las declaraciones almacenadas dentro del bucle y pasa al siguiente objeto de la colección (el próximo la palabra clave es útil aquí). Comprendamos la estructura del código con un ejemplo básico.

Cómo usar el bucle For Each en Excel VBA

Suponga que desea imprimir un número en las celdas A1 a A10. El mejor enfoque es usar for each loop con la función range y dejar que el código haga lo necesario. Así es como puedes hacer esta simple tarea:

  1. Abra el editor de código VBA presionando alternativa + F11.
  2. Inserte un módulo haciendo clic en el Módulo opción dentro de la Insertar pestaña.
  3. Cree una subrutina usando el comando sub() en la ventana del módulo del editor de código. Asegúrese de asignar un nombre significativo a la subrutina. Para este ejemplo, puede usar el nombre for_each_loop.

Ahora que los conceptos básicos están fuera del camino, es hora de comenzar a escribir el código. Dentro de la subrutina, escriba los siguientes comandos:

celda tenue como rango

para cada celda en Hojas("Hoja1").Rango("A1:A10")

celda.valor = 10

siguiente celda

Cuando se ejecuta el código, el C variable almacenará el valor de A1. Luego, a medida que pasa a la declaración dentro del ciclo, evalúa el comando e ingresa un valor de 10 en la celda definida, es decir, la celda A1.

Finalmente, a medida que pasa a la palabra clave Siguiente, pasa al siguiente valor, es decir, la celda A2. El bucle se ejecuta hasta llegar a la celda A10. Esta es la salida final:

Uso del bucle con objetos: celdas, hojas y libros de trabajo

Excel tiene tres tipos de objetos principales con los que trabaja regularmente. Estos son celdas, hojas y libros de trabajo. Así es como puede usar el bucle con los tres tipos de objetos.

Trabajar con celdas y bucles juntos

Suponga que desea agregar un valor y algunas condiciones de formato a un rango de celdas en Sheet1. Como primer paso, debe definir las condiciones dentro del bucle, seguido de los comandos de formato.

Escriba el siguiente código dentro de una subrutina.

Sub for_each_loop()

tenue c Como Rango

Para cada c en hojas ("Hoja1").Rango("A1:A10")

Con C

.Valor = 10

.Fuente. Color = vbRojo

.Fuente. Negrita = Verdadero

.Fuente. tachado = Verdadero

FinCon

Siguiente c

Fin Sub

El con La función es útil cuando se realizan múltiples funciones con un objeto específico. Como desea realizar una serie de tareas con la variable c, puede combinarlas todas usando una función with...end with.

El ciclo iguala el valor de c con el valor de cada celda e ingresa el valor como 10. Además, cambia el color de la celda a rojo, resalta el valor en negrita y lo tacha. Una vez que completa todos los pasos, pasa al siguiente valor definido en el rango.

Uso del bucle para hojas de control

De manera similar al ejemplo anterior, puede usar for each loop para controlar las hojas. ¿Qué hay de cambiar el nombre de Sheet1 a Sheet3 usando VBA?

Puede usar el siguiente código para cambiar el nombre de una hoja de trabajo existente en Excel usando VBA:

Sub for_each_loop_sheets()

ParaCadamierdaEnEste libro de trabajo.Hojas

Si mierda. Nombre = "Hoja1" Entonces

mierda Nombre = "Hoja3"

FinSi

siguiente mierda

Fin Sub

El código recorre cada hoja dentro del libro de trabajo y verifica el nombre de cada hoja. Si encuentra el nombre Hoja1, lo cambia a Hoja3. Avanza a través de las hojas restantes, si las hay, dentro del libro de trabajo. Una vez que la ejecución del código llega a la última hoja, sale del bucle y de la subrutina.

Entre algunos otros usos comunes, puede combinar varias hojas de trabajo usando VBA y actualice el contenido en una sola hoja usando bucles.

Alternar entre libros de trabajo con el bucle

Finalmente, puede usar el bucle for each para alternar entre diferentes libros de trabajo y realizar tareas específicas. Demostremos esta función con un ejemplo.

Puede usar los comandos de VBA para agregar tres nuevos libros de trabajo y cerrar todos los abiertos juntos. Así es como puedes hacerlo:

Sub loop_wrkbook()

libro de trabajo tenue como libro de trabajo

libros de trabajo.Agregar

libros de trabajo.Agregar

libros de trabajo.Agregar

Para cada libro de trabajo en libros de trabajo

libro de trabajo.Cerca

Siguiente libro de trabajo

Fin Sub

El código anterior también cerrará su libro de macros; asegúrese de haber guardado sus códigos antes de ejecutar este código.

Dado que los bucles tienen múltiples usos, también puede consolidar datos de varios libros de trabajo en un solo libro de trabajo.

Uso de una instrucción IF anidada con el bucle

Al igual que el ejemplo anterior, puede usar una declaración IF dentro del ciclo para verificar condiciones específicas. Cambiemos el color de fondo de la celda según los valores de la celda.

Hay algunos números aleatorios en las celdas A1:A20. Puede escribir un ciclo para recorrer cada celda dada en el rango; si el valor de la celda es inferior a 10, el color de la celda debería cambiar a rojo. Si el valor de la celda excede 10, debería volverse verde. Use el siguiente código para este propósito:

Subbucle_w_if()

tenue c Como Rango

Para cada c en hojas ("Hoja4").Rango("A1:A20")

SiC.Valor < 10 Entonces

C. Interior. Índice de color = 3

Demás: C. Interior. ÍndiceColor = 4

FinSi

Siguiente c

Fin Sub

Así es como se ve la salida:

Uso de bucles en Excel VBA

Excel VBA no está restringido solo a for each loop. Hay una variedad de bucles útiles que le permiten realizar diferentes funciones con facilidad. Dile adiós a las tareas manuales mundanas, ya que los bucles de VBA como el bucle for, do while y do till intervienen para hacerte la vida más fácil.