VBA para cada bucle

Excel VBA para cada bucle

VBA For Each Loop pasa por toda la colección de objetos o elementos y realiza un conjunto similar de actividades. Tomará en consideración todos los objetos especificados disponibles y realizará la actividad indicada en cada objeto.

En VBA es obligatorio comprender los bucles en VBA. Un bucle le permite realizar el mismo tipo de actividad para muchas celdas u objetos en Excel. En el artículo de hoy, nos vamos a concentrar en el mecanismo For Each Loop.

Sintaxis

For Each Loop puede recorrer toda la colección establecida de objetos o elementos. Una colección no es más que "Todos los libros abiertos", "Todas las hojas de trabajo en un libro", "Toda la colección de formas y gráficos en el libro".

Veamos la sintaxis.

Para cada objeto de la colección ¿Qué hacer? Siguiente objeto

Por ejemplo, tiene 10 hojas en su libro de trabajo y desea ocultar todas las hojas de trabajo excepto en la que se encuentra. ¿Puede ocultar manualmente? Sí, puede, pero ¿qué pasa si tiene 100 hojas como esa? -consumir tarea por hacer. Puede hacer esto usando para cada bucle.

¿Cómo usar For Each Loop en VBA? (Ejemplos)

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

Ejemplo n. ° 1: insertar el mismo texto en todas las hojas

Veremos cómo usar FOR EACH en VBA con un ejemplo simple. Suponga que tiene 5 hojas de trabajo en un libro y desea insertar la palabra "Hola" en todas las hojas de trabajo en la celda A1.

Podemos hacer esto con FOR CADA LAZO. Una cosa que debe recordar aquí es que en realidad estamos realizando esta actividad en cada hoja de trabajo, no en la misma hoja de trabajo. Siga los pasos a continuación para escribir el código VBA.

Paso 1: inicie la macro de Excel.

Código:

 Sub por_ cada_ ejemplo1 () Fin Sub 

Paso 2: Ya que nos referimos a las hojas de trabajo, declare la variable como “Hoja de trabajo”.

Código:

 Sub For_Each_Example1 () Dim Ws As Worksheet End Sub 

Paso 3: Ahora, usando PARA CADA LAZO, debemos consultar cada hoja de trabajo en el libro de trabajo activo.

Código:

 Sub For_Each_Example1 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets Next Ws End Sub 

Paso 4: Ahora escriba lo que queremos hacer en cada hoja de trabajo. En cada hoja de trabajo, debemos poner la palabra "Hola" en la celda A1.

Código: 

 Sub For_Each_Example1 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub 

Paso 5: Ahora ejecute este código manualmente a través de la opción o presione la tecla de método abreviado F5, no importa cuántas hojas tenga, insertará la palabra "Hola" en todas las hojas de trabajo.

Ejemplo n. ° 2 - Ocultar todas las hojas

Como se dijo anteriormente en la publicación, ¿qué sucede si tiene cientos de hojas para ocultar, excepto en la que se encuentra? Usando Para cada ciclo, podemos ocultar todas las hojas en Excel.

Paso 1: Inicie la macro con su nombre.

Código:

 Sub por_Cada_Ejemplo2 () End Sub 

Paso 2: Declare la variable como " Ws ".

Código:

 Sub For_Each_Example2 () Dim Ws As Worksheet End Sub 

Paso 3: Ahora, en cada hoja de trabajo, lo que debe hacer es ocultar la hoja.

Código:

 Sub For_Each_Example2 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub 

Paso 4: Pero si ejecuta el código anterior, intentará ocultar todas las hojas, pero Excel necesita al menos una hoja para ser visible. Así que tenemos que decir qué hoja no esconder.

Código:

 Sub For_Each_Example2 () Dim Ws como hoja de trabajo para cada Ws en ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub 

El símbolo del operador significa que no es igual a en VBA .

Entonces, el código dice que cuando está recorriendo todas las hojas de trabajo en el libro de trabajo activo, oculte solo si el nombre de la hoja no es igual al nombre de la hoja de la Hoja principal.

Esto se puede hacer usando la instrucción IF en VBA. Escriba el código como IF Ws.Name "Hoja principal" Luego ocúltelo o si es igual al nombre de la hoja "Hoja principal", no lo oculte.

Paso 5: Ahora ejecute el código usando la tecla F5 o manualmente, luego ocultará toda la hoja de trabajo excepto la llamada "Hoja principal".

Ejemplo n. ° 3: mostrar todas las hojas

Hemos visto cómo ocultar todas las hojas excepto en la que estamos. Del mismo modo, también podemos mostrar todas las hojas de trabajo.

Solo necesitamos cambiar el código de xlSheetVeryHidden a xlSheetVisible.

Código:

 Sub For_Each_Example3 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub 

Aquí no necesitamos la condición SI porque estamos mostrando todas las hojas. Si no desea mostrar ninguna hoja específica, puede usar la condición SI y proporcionar el nombre de la hoja.

Ejemplo n. ° 4: proteger y desproteger todas las hojas

Proteger todas las hojas: podemos proteger todas las hojas del libro de trabajo con solo un fragmento de código. Todo el código es el mismo, lo único que tenemos que hacer aquí es en lugar de Ws. Visible necesitamos poner el código Ws. Proteja y escriba la contraseña.

Código:

 Sub For_Each_Example4 () Dim Ws como hoja de trabajo para cada W en ActiveWorkbook.Worksheets Ws.Protect Contraseña: = "Excel @ 2019" Siguiente WS End Sub 

Desproteger todas las hojas: en una nota similar, usando vba también podemos desproteger todas las hojas que estaban protegidas en el libro de trabajo. Solo necesitamos poner la palabra Desproteger y contraseña.

Código:

 Sub For_Each_Example6() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Unprotect Password:="Excel@2019" Next Ws End Sub 

Things to Remember

  • Each is for the collection of objects.
  • It will consider all the specified objects in the specified workbook.
  • While declaring the variable we need to which object we are referring to. For example Worksheet, Workbook, Chart, etc.