Blog

Postado em em 4 de setembro de 2020

For Each VBA (Estrutura de Repetição)

Aqui vou te mostrar como utilizar as estruturas de repetição do VBA! Mais especificamente, vamos ver como utilizar o For Each VBA!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

O que é uma estrutura de repetição no VBA?

São estruturas usadas dentro do VBA responsáveis por realizar ações ou executar comandos a partir de determinadas condições desejadas pelo programador para realizar ações e repetir essas ações ou decisões inúmeras vezes.

 

Por que usar o For Each VBA?

Porque, com ele, realizamos uma mesma ação ou executamos um mesmo comando desejado uma enorme quantidade de vezes e com grande rapidez, dependendo do número de vezes que essa ação se repete.

 

Como fazemos para usar o For Each VBA?

Caso você não esteja acompanhando, essa é a oitava aula da nossa série compilação de planilhas no VBA e nela ensinamos conteúdos que serão fundamentais nesse post e nele serão abordados mais superficialmente.

Existem diversas estruturas de repetição no VBA e cada uma delas é mais recomendada para uma situação específica. A estrutura que vamos dedicar o post é a For Each. Essa é uma estrutura cujo foco é percorrer objetos como um todo. Por exemplo: todas as células de um intervalo, todas as abas de uma planilha, todas as planilhas de uma pasta e por aí vai.

No nosso arquivo base de exemplo, temos uma tabela de valores de venda de uma empresa e precisamos preencher a situação da venda, classificada como Boa ou Ruim, se maior ou igual a 100.000 ou menor, respectivamente.

1) Percorrendo células em um intervalo (de células)

Trabalhando na primeira aba do nosso arquivo, de nome “For Each”, queremos preencher as células da coluna C com a situação de venda de acordo com a classificação desejada pré-estabelecida. Observe a tabela da primeira aba:

For Each VBA

For Each VBA

Então, programaremos o código para percorrer o intervalo de células-alvo da coluna C.

Observe abaixo o código que fará esse varrimento, executando ações. Iremos explicá-lo em seguida.

 

Sub estrutura_repeticao()
For Each celula In Range("c2:c6")
      If celula.Offset(0, -1).Value >= 100000 Then
              celula.Value = "Boa"
      Else
              celula.Value = "Ruim"
      End If
Next
End Sub

Explicação da sub estrutura_repeticao():

A sub basicamente nos diz para percorrer todas as células no intervalo de C2 a C6, uma a uma, e testar a seguinte condição: o valor da célula da coluna B (valor de venda – 1 coluna imediatamente à esquerda da célula-alvo) vai ser comparado com 100.000. Se esse valor for maior do que o 100.000, na célula-alvo ficará escrito “Boa”.

Caso contrário (Else), ou seja, o valor da célula da coluna B (de venda) for menor do que 100.000, na célula-alvo queremos escrever “Ruim”.

Lembre-se que essa comparação será feita em cada célula da coluna B, e o “resultado” da comparação ficará escrito na coluna C. A estrutura de repetição irá mudar de linha automaticamente a cada “resultado” da estrutura If-Else-End If.

2) Percorrendo abas (no conjunto de abas)

Nesse tópico queremos fazer operações percorrendo as abas do arquivo que tem tabelas iguais as mostradas abaixo (Aba 1, Aba 2, Aba 3 e Aba 4).

For Each Next

For Each Next

Então iremos passar para a sub uma estrutura que percorra as abas, e faça a classificação das vendas nessas tabelas, em cada aba, de forma parecida com o primeiro exemplo. Observe a seguir o exemplo de código dado no vídeo:

 

Sub abas()
For Each aba In ThisWorkbook.Sheets
    If aba.Name <> "For Each" Then
        
        If aba.Range("b2").Value >= 100000 Then
              aba.Range("c2").Value = "Boa"
        Else
              aba.Range("c2").Value = "Ruim"
        End If
    End If
Next
End Sub

Explicação da sub abas():

A sub irá testar a primeira condição para saber em que aba fará os procedimentos desejados. Como temos as abas “For Each”, “Aba 1”, “Aba 2”, “Aba 3”, “Aba 4”, queremos apenas modificar as 4 últimas abas. Por isso estamos colocando a condição de a aba ser diferente da aba “For Each”, para não mexermos nela.

O VBA irá percorrer todas as abas, excluindo a “For Each”, e realizando as ações seguintes.

Dentro de cada aba-alvo, a nossa sub irá testar o valor da célula B2 (de cada aba), e comparar com o 100.000.

Caso esse valor seja maior ou igual ao próprio 100.000, na célula C2 (de cada aba) ele irá escrever como resultado o texto “Boa”. Caso contrário, ou seja, esse valor seja menor do que 100.000, a célula C2 vai receber como resultado o texto “Ruim”.

Com isso, o usuário tem muito tempo poupado e transforma pensamentos em ações automatizadas e funções (decisões) que ele mesmo faria manualmente uma a uma, e em alguns segundos (ou minutos) tem todas essas ações realizadas repetidamente pelo código.

Ficamos por aqui! Fique ligado no nosso blog para mais conteúdo de VBA e no nosso canal do Youtube para as próximas aulas!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Quer aprender a construir um Dashboard em Excel do zero? Se inscreva gratuitamente na Jornada do Excel!