¿Cómo usar VBA para cada bucle? (con ejemplos de Excel)

Tabla de contenido

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. 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. Un grupo 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 ocultarlas manualmente? Sí, puedes, pero ¿y si tienes 100 hojas así? ¿No es una tarea tediosa y que requiere mucho tiempo? Puede hacer esto usando para cada bucle.

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

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 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 () End 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, necesitamos referir cada hoja de trabajo en el libro 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 acceso directo F5. No importa cuántas hojas tengas; 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é pasa 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 visible. Así que tenemos que decir qué hoja no esconder.

Código:

Sub For_Each_Example2 () Dim Ws As Worksheet For each Ws in 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 .

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

Sub For_Each_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

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

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

Código:

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

Cosas para recordar

  • Cada uno es para la colección de objetos.
  • Considerará todos los objetos especificados en el libro de trabajo especificado.
  • Al declarar la variable, necesitamos a qué objeto nos referimos, por ejemplo, Hoja de trabajo, Libro de trabajo, Gráfico, etc.

Articulos interesantes...