Excel VBA para cada bucle

"Cada" palabra clave se utiliza en VBA junto con la función "Para". Significa que para cada entidad en una matriz o rango repite el proceso en el ciclo for. Básicamente, no ingresaremos el rango de pasos, es decir, de 1 a 5 o 1 a 10, sino que simplemente lo colocamos como se muestra en la sintaxis a continuación.

Sintaxis:

Para cada nombre de objeto en rango

Nota: debe tener la pestaña Desarrollador en la hoja de cálculo de Excel.

Si no ve la pestaña "Desarrollador" en Excel, consulte los pasos a continuación.

Paso 1: haz clic en la opción Archivo .

Paso 2: aparece el menú desplegable, haga clic en la pestaña Opciones .

Paso 3: Una vez que haga clic en "Opciones", aparecerá un cuadro de diálogo como se muestra a continuación y haga clic en la opción Personalizar cinta de opciones.

Paso 4: Cuando arrastremos hacia abajo en las opciones de personalización de la cinta de opciones, encontraremos una opción para Desarrollador que necesitamos marcar esa casilla que nos permitirá usar VBA en Excel.

¿Cómo usar para cada bucle en VBA?

A continuación se muestran los diferentes ejemplos para usar For Each Loop en Excel usando el código VBA.

Puede descargar esta plantilla de VBA para cada bucle de Excel aquí - Plantilla de VBA para cada bucle de Excel

Excel VBA para cada bucle - Ejemplo # 1

Tomaremos un ejemplo simple de For Each Loop en VBA. Suponga que a continuación se muestra el conjunto de datos en VBA.

Siga los pasos a continuación para usar For Each Loop en Excel VBA.

Paso 1: haga clic en la pestaña "Desarrollador" y luego haga clic en la opción "Visual Basic" en el lado izquierdo (primera opción) como se muestra a continuación.

Una vez que hace clic en él, aparece una nueva ventana como se muestra a continuación.

Notará que contiene dos pestañas en el lado izquierdo, “Hoja1 (Hoja1)” y “Este libro de trabajo”. La única diferencia es “Hoja1” cuando desea ejecutar código solo para esta hoja en particular y en “Este libro de trabajo”, podemos escribir un código y ejecutarlo que se puede aplicar a todo el libro de Excel.

Paso 2: Haga doble clic en “Hoja1 (Hoja1) y verá una pantalla en blanco donde necesitamos escribir el código. Dé un nombre al subconjunto creado. Aquí hemos dado nombre como "Sub For_Each_Ex1 ()" como se muestra en la siguiente captura de pantalla.

Código:

 Sub For_Each_Ex1 () End Sub 

Esta es la forma en que creamos un subconjunto y automáticamente aparece "End Sub". Esta es la característica predeterminada de Excel. Si "End Sub" no aparece, el código no se ejecutará y arrojará un error.

Paso 3: Declararemos las variables como un rango.

Código:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range End Sub 

Aquí hemos declarado dos variables, "Earn" que usaremos con For Each y "Range1" como el rango del conjunto de datos.

Paso 4: Ahora, arreglaremos un rango, es decir, un rango de datos sobre los que debemos trabajar utilizando la palabra clave "Establecer" como se muestra a continuación.

Código:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") End Sub 

Aquí fijamos "Rango1" a partir de las celdas de rango A1 a A10, que es nuestro conjunto de datos.

Paso 5: Ahora ejecutaremos el bucle For utilizando cada palabra clave.

Código:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") Para cada ganancia en Range1 End Sub 

Aquí, para cada valor en Rango, Earn obtendrá un valor asignado a medida que el bucle For se ejecute paso a paso.

Paso 6: Ahora, usaremos la palabra clave "Msgbox" para mostrar cada entrada de línea en el rango asignado.

Código:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") For Each Earn In Range1 MsgBox Earn.Value End Sub 

Aquí "Earn.value" mostrará el valor en la celda, es decir, a partir de la primera celda del rango.

Paso 7: Ahora, queremos ejecutar el siguiente valor en el rango de celdas dado, por lo tanto, tenemos que usar la palabra clave "Siguiente" en el código. Esto ayudará a avanzar más en el rango y mostrar cada entidad en el rango de celdas una por una.

Código:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") For Each Earn In Range1 MsgBox Earn.Value Next Earn End Sub 

Paso 8: Ejecute el código presionando F5 o el botón Ejecutar y vea la salida.

En el momento en que se ejecuta la línea de código "Próximo Ganancia", se asignará "Valor Ganar" con el siguiente valor de celda en el rango. Uno por uno, haga clic en "Aceptar" y seguirá mostrando cada valor en el rango hasta que finalice el rango de valores.

Excel VBA para cada bucle - Ejemplo # 2

Tomaremos otro ejemplo en el que mostraremos el nombre de cada hoja en un archivo de Excel. Supongamos que tenemos las hojas nombradas a continuación en el archivo de Excel:

Como notamos que hay alrededor de 5 hojas en el archivo de Excel y necesitamos mostrar el nombre de cada una por una.

Escribiremos y ejecutaremos el código en la sección "ThisWorkbook" como se resalta en el cuadro rojo a continuación:

Haga doble clic en él y mientras aparece el panel de ventana y comience a escribir el código en él. Siga los pasos a continuación para usar For Each Loop en Excel VBA:

Paso 1: Escribiremos el código asignando un nombre de subconjunto como se muestra a continuación.

Código:

 Subnombre de página () Fin Sub 

Paso 2: Además, podemos comenzar directamente a escribir la declaración de bucle "For" sin declarar la variable como se muestra a continuación.

Código:

 Subnombre de página () para cada aplicación en sht. 

Aquí "sht" es nuestra variable1 que por defecto se declara y "Application.sheets" significa que en el archivo considere todas las hojas. Application.fucntion especifica que podemos agregar cualquier característica o función o herramienta de Excel a tener en cuenta al ejecutar el código.

Paso 3: Ahora ingresaremos la sintaxis del cuadro de mensaje y junto con ella agregaremos la sintaxis para mostrar el nombre de la hoja como se muestra a continuación:

Código:

 Subnombre de página () para cada sht en Application.Sheets MsgBox "El nombre de la hoja es:" & sht.Name End Sub 

Aquí, la declaración que nos gustaría mostrar es "El nombre de la hoja es:" y luego escribimos un ampersand (&) que concatena la línea de código y luego escribimos "sht.Name", es decir, seleccionará la hoja a partir de la primera hoja y mostrar el nombre.

Paso 4: Ahora, necesitamos repetir el proceso para mostrar el nombre de cada hoja. Por lo tanto, usaríamos "Siguiente sht" como se muestra a continuación:

Código:

 Subnombre de página () para cada sht en Application.Sheets MsgBox "El nombre de la hoja es:" & sht.Name Next sht End Sub 

"Next sht" le informará al sistema que, considere la siguiente hoja y muestre su nombre para su posterior ejecución.

Paso 6: Ejecute el código presionando F5 o el botón Ejecutar y vea la salida.

Una vez que haga clic en "Aceptar" y el código se ejecute más, se mostrará el siguiente nombre de la hoja. El código se ejecutará hasta que no haya más hojas en exhibición.

Excel VBA para cada bucle - Ejemplo # 3

Ahora tomaremos un ejemplo en el que tenemos que sumar todos los valores en un conjunto dado de datos o una matriz. Supongamos a continuación el conjunto de datos :.

Siga los pasos a continuación para usar For Each Loop en Excel VBA:

Paso 1: Primero declare el nombre del subconjunto como "eachadd ()" como se muestra a continuación.

Código:

 Sub eachadd () End Sub 

Paso 2: Ahora, declararemos las variables necesarias, una como número entero llamado "total" en el que seguimos sumando los valores de las celdas uno por uno y fijamos un rango de celdas que contiene los valores que necesitamos agregar.

Código:

 Sub eachadd () Dim total como entero Dim Dim Range1 como Range End Sub 

Paso 3: Después de declarar la variable y el rango, necesitamos corregir el rango que se utilizará para el bucle. Arreglaremos este rango de celdas A1 a A10 usando la palabra clave "Set" como se muestra a continuación:

Código:

 Sub eachadd () Dim total como número entero Dim Range1 como rango Set Range1 = Range ("A1: A10") End Sub 

Paso 4: Ahora podemos comenzar directamente a usar la función de bucle For y declarar directamente la variable. Aquí, estamos usando "add1" como variable y el sistema lo declarará por defecto.

Código:

 Sub eachadd () Dim total como número entero Dim Range1 como rango Set Range1 = Range ("A1: A10") Para cada add1 In Range1 End Sub 

Paso 5: Agregar cada entidad en el rango uno por uno y en la variable declarada "total". Por defecto, el valor de "total" inicialmente es cero. Y necesitamos agregar uno a uno el valor de las celdas y nuevamente esa suma debe agregar "total" nuevamente.

Código:

 Sub eachadd () Dim total como entero Dim Dim Range1 como Range Set Range1 = Range ("A1: A10") Para cada add1 In Range1 total = total + add1.Value End Sub 

La declaración anterior se ejecuta de derecha a izquierda, es decir, "add1.value" es el primer valor de celda y se agrega a "total", que es cero. Por lo tanto, la suma sería 0 + 1, que es 1. Y esa suma como 1 iría en "total" antes del signo "=". Esta es una ventaja ya que la fórmula se ejecuta de izquierda a derecha.

Paso 6: Ahora agregue "Next add1", que ahora ayudará a considerar el siguiente valor de celda del rango de datos y agregue ese valor en la variable "total" como se muestra a continuación.

Código:

 Sub eachadd () Dim total como entero Dim Dim Range1 como Range Set Range1 = Range ("A1: A10") Para cada add1 In Range1 total = total + add1.Value Next add1 End Sub 

Paso 6: Presione "F8" para ejecutar el código por cada línea. Además, podemos ver el valor de "total" en la siguiente captura de pantalla.

Del mismo modo, hasta que se supere el rango de celdas, for loop seguirá ejecutando esta suma de una matriz.

Paso 7: Ahora, utilizaremos la palabra clave "Msgbox".

Código:

 Sub eachadd () Dim total como número entero Dim Range1 como rango Set Range1 = Range ("A1: A10") Para cada add1 In Range1 total = total + add1.Value Next add1 MsgBox "Resumen final:" & total End Sub 

Paso 8: Ejecute el código presionando F5 o el botón Ejecutar y vea la salida.

Cosas para recordar

  • "Cada" palabra clave solo se usa la mayoría de las veces en caso de uso de la función VBA For Loop únicamente. De lo contrario, tiene un uso limitado en Excel VBA.
  • La ventaja de "Cada" palabra clave es solo que no tenemos pasos de declaración como de 1 a x en la declaración "Para".

Artículos recomendados

Esta es una guía de VBA para cada bucle. Aquí discutimos cómo usar For Each Loop en Excel usando el código VBA junto con ejemplos prácticos y una plantilla de Excel descargable. A continuación se presentan algunos artículos útiles de Excel relacionados con VBA:

  1. VBA Do While Loop
  2. Cambio de columnas en Excel
  3. VBA Break for Loop
  4. Contar nombres en Excel
  5. ¿Cómo ejecutar el código VBA?

Categoría: