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:
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.
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.
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.
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
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.
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
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!
Para acessar outras publicações de VBA, clique aqui!
Quer aprender mais sobre VBA com um Minicurso Gratuito?