Como usar o VBA para cada loop? (com exemplos do Excel)

Excel VBA para cada loop

O VBA For Each Loop percorre toda a coleção de objetos ou itens e executa um conjunto semelhante de atividades. Ele levará em consideração todos os objetos especificados disponíveis e executará a atividade instruída em cada objeto.

No VBA, é obrigatório entender os loops. Um loop permite que você conduza o mesmo tipo de atividade para muitas células ou objetos no Excel. No artigo de hoje, vamos nos concentrar no mecanismo For Each Loop.

Sintaxe

For Each Loop pode percorrer toda a coleção definida de objetos ou itens. Um grupo nada mais é do que “Todas as pastas de trabalho abertas”, “Todas as planilhas em uma pasta de trabalho”, “Toda a coleção de formas e gráficos na pasta de trabalho”.

Vejamos a sintaxe.

Para cada objeto da coleção O que fazer? Próximo Objeto

Por exemplo, você tem 10 planilhas em sua pasta de trabalho e deseja ocultar todas as planilhas, exceto aquela em que você está. Você pode ocultar manualmente? Sim, você pode, mas e se você tiver 100 folhas assim? Não é uma tarefa tediosa e demorada de fazer? Você pode fazer isso usando para cada loop.

Como usar For Each Loop no VBA? (Exemplos)

Exemplo # 1 - inserir o mesmo texto em todas as folhas

Veremos como usar FOR EACH em VBA com um exemplo simples. Suponha que você tenha 5 planilhas em uma pasta de trabalho e deseja inserir a palavra “Olá” em todas as planilhas da célula A1.

Podemos fazer isso com FOR EACH LOOP. Uma coisa que você precisa lembrar aqui é que estamos realizando essa atividade em cada planilha, não na mesma planilha. Siga as etapas abaixo para escrever o código VBA.

Etapa 1: iniciar a macro do Excel.

Código:

Sub For_Each_Example1 () End Sub

Etapa 2: como estamos nos referindo às planilhas, declare a variável como “Planilha”.

Código:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Etapa 3: Agora, usando FOR EACH LOOP, precisamos consultar cada planilha na pasta de trabalho ativa.

Código:

Sub For_Each_Example1 () Dim Ws como planilha para cada Ws em ActiveWorkbook.Worksheets Next Ws End Sub

Passo 4: Agora, escreva o que queremos fazer em cada planilha. Em cada planilha, precisamos colocar a palavra “Olá” na célula A1.

Código:

Sub For_Each_Example1 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Passo 5: Agora execute este código manualmente através da opção ou pressione a tecla de atalho F5. Não importa quantas folhas você tenha; irá inserir a palavra “Olá” em todas as planilhas.

Exemplo 2 - Ocultar todas as planilhas

Como dito anteriormente no post, e se você tiver centenas de planilhas para ocultar, exceto aquela em que você está. Usando Para cada loop, podemos ocultar todas as planilhas no Excel.

Etapa 1: inicie a macro com seu nome.

Código:

Sub For_Each_Example2 () End Sub

Etapa 2: declare a variável como “ Ws.”

Código:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Passo 3: Agora, em cada planilha, o que você precisa fazer é ocultar a planilha.

Código:

Sub For_Each_Example2 () Dim Ws como planilha para cada Ws em ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub

Passo 4: Mas se você executar o código acima, ele tentará ocultar todas as planilhas, mas o excel precisa de pelo menos uma planilha visível. Portanto, precisamos dizer qual folha não devemos ocultar.

Código:

Sub For_Each_Example2 () Dim Ws As Planilha Para Cada Ws Em ActiveWorkbook.Worksheets If Ws.Name "Folha Principal" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub

O símbolo do operador significa diferente no 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 as planilhas: em uma observação semelhante, usando o VBA, também podemos desproteger todas as planilhas protegidas na pasta de trabalho. Precisamos colocar a palavra Desproteger e senha.

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

Coisas para lembrar

  • Cada um é para a coleção de objetos.
  • Ele considerará todos os objetos especificados na pasta de trabalho especificada.
  • Ao declarar a variável, precisamos a qual objeto nos referimos - por exemplo, planilha, pasta de trabalho, gráfico, etc.

Artigos interessantes...