Loops VBA do Excel
Os loops podem ser considerados como o melhor componente do VBA e também podem ser considerados o coração das macros. Geralmente, eles ajudam a reduzir o número de linhas em seu código e fazem o trabalho em minutos, o que pode levar horas para um ser humano.
Na vida cotidiana, um programador apresenta esses casos em que ele precisa executar o mesmo conjunto de códigos repetidamente. É chamado de loop. Obviamente, sempre que executar o mesmo código fornecerá o mesmo resultado com alguma alteração fracionária na variável. O loop tem um grande conjunto de vantagens, mas o mais importante de tudo é a automação. Ajuda a automatizar o material.
Se você não usou o VBA Script antes, basta abrir uma pasta de trabalho do Excel e pressionar Alt + F11 . Ele abrirá um projeto VBA.
Vamos nos aprofundar por dentro.
Suponha que desejássemos imprimir de 1 a 10 números de uma só vez. Podemos fazer isso com o seguinte código.
Código:
Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub
Se você conseguir ler o código rapidamente, adicionei o Debug.Print um a um para imprimir números de 1 a 10. Depois de executar o código, podemos ver a saída na Janela Imediata. Para abrir a Janela imediata, pressione Ctrl + G em qualquer lugar do Excel.
Execute o código usando a tecla F5 ou manualmente, conforme mostrado na captura de tela abaixo. Então, vamos verificar a saída desse código.
Tipos de loops VBA no Excel
Sendo um programador, você nunca estará interessado em escrever linhas repetitivas que estão prestes a dar o mesmo resultado. Você gostaria de automatizá-lo. Portanto, veremos vários Loops VBA do Excel e como usá-los usando alguns exemplos.
Tipo # 1 - VBA para o próximo loop
O loop For Next VBA nos permite fazer um loop pelo intervalo de células e executar a mesma tarefa para cada célula especificada no loop. O número inicial e o número final devem ser indicados aqui.
código:
Sub loop1 () Para i = 1 a 10 células (i, 1) .Value = i Próximo i End Sub
Este código fornece exatamente a mesma saída que a anterior. No entanto, a coisa mais notável neste código é a redução de um número de linhas. Reduzimos o código de 12 linhas para apenas um código de 5 linhas.
Nesse código, loop1 é o nome da macro. O loop for começa em i = 1, ele imprime o valor de i (ou seja, 1) na célula do excel e em Next, volta novamente para o início do loop for e faz com que i = 2 imprima o valor de i (ou seja, 2) na próxima célula e assim sucessivamente até que o código atinja seu último valor, ou seja, 10. Assim que o código atingir o último valor de i (10), o código será finalizado devido à indisponibilidade de qualquer valor inteiro acima de 10.
Execute o código usando a tecla F5 ou manualmente. Então você pode ver a saída como abaixo.
Tipo # 2 - VBA para loop com avanço
Como você viu no exemplo do loop anterior, eu estava tendo um aumento em 1 etapa. Por padrão, o valor da etapa é considerado como 1 no VBA. No entanto, é possível definir um passo por conta própria? Suponha que você queira ver apenas os números pares entre 1 e 20. Como isso pode ser feito?
Como a matemática geral sugere, os números que estão à distância de 2 um do outro (a partir de um primeiro número par 2) são considerados números pares, certo?
Vamos aplicar a mesma lógica. Veja o código abaixo para sua referência.
Código:
Sub ForwardStep () Para i = 2 a 20 Etapa 2 Células (i, 1) .Value = i Próximo i End Sub
Para os valores iniciados em 2, esse loop permite imprimir 2, 4, 6, 8 … 20 nas células excel subsequentes. O passo 2 deu explicitamente para que, a partir do número 2, o código salte para o próximo número com o passo 2 (ou seja, 4 será impresso) e assim por diante. Esse processo continuará até que 20 ocorra em uma célula. Assim que ocorrer 20 em uma célula, o loop será encerrado automaticamente.
Execute o código usando a tecla F5 ou manualmente. Então você pode ver a saída como abaixo.
Tipo # 3 - VBA para loop com retrocesso
Da mesma forma que no loop for com avanço, podemos usar o loop for para trás. Por exemplo, e se definirmos nosso passo para trás como -2 e executar um loop for dos valores 20 a 2?
Vamos ver como isso funciona.
código:
Sub BackwardStep () Para i = 20 Para 2 Etapa -2 Debug.Print i Próximo i End Sub
Depois de executar o código, podemos ver a saída na Janela Imediata. Para abrir a Janela imediata, pressione Ctrl + G em qualquer lugar do Excel.
Como atribuímos um ponto inicial do loop como 20 e o ponto final 2 ao passo -2, o loop começa em 20 e no passo -2 passa para o próximo número que é -18 e assim por diante. Assim que o loop atingir o valor 2, ele será encerrado automaticamente e o último valor será impresso como 2.
Tipo # 4 - VBA aninhado para loop
Também podemos aninhar o loop theFor. No entanto, não é recomendável fazer o aninhamento do mesmo loop mais do que três vezes em um código (pode ser considerado como o erro na lógica).
Por favor, veja o código abaixo para aninhado para loop.
Código:
Sub NestedFor () Para i = 1 a 10 Para j = 1 a 2 Células (i, j) .Valor = i * j Próximo j Próximo i Fim Sub
Neste exemplo, em i = 1 ej = 1, a macro coloca o valor de i * j (1 * 1) na interseção da linha i = 1 e da coluna j = 1 (ou seja, célula A1) e passa para o próximo valor de j (2) mantendo i = 1. Na interseção da linha i = 1 e da coluna j = 2 (ou seja, célula B1), a macro insere o valor de I * j (1 * 2). O loop ignora o próximo valor de j, pois j varia apenas de 1 a 2 e passa para o próximo valor de i.
Para i = 2 e j = 1, a macro insere o valor de i * j (2 * 1) na interseção da 2ª linha e da 1ª coluna (isto é, célula A2) e continua. Até o intervalo de iej.
Execute o código usando a tecla F5 ou manualmente, conforme mostrado na captura de tela abaixo. Então você pode ver a saída como abaixo.
Tipo # 5 - VBA Do While Loop
O loop Do While é um dos loops mais interessantes do VBA. Permite verificar a condição e gravar a saída (DO), quando uma determinada condição ou conjunto de condições é atendida (ou a condição / s é / é VERDADEIRA).
Veja o código abaixo:
Código:
O valor de x é um número inteiro de números inteiros que são iguais a zero e a soma é igual a zero.
Esse loop funciona da seguinte maneira:
Para os valores de i de 1 (i = 1 inicialmente) a 10, ele calcula i * i (ou seja, valor ao quadrado para cada valor inteiro de i) e o insere na célula 1 a 10, respectivamente. A saída nada mais é do que os valores ao quadrado dos números inteiros 1 a 10. Por favor, dê uma olhada em Loop neste código. É obrigatório adicioná-lo, caso contrário, o sistema disparará um erro.
Execute o código usando a tecla F5 ou manualmente. Então você pode ver a saída como abaixo.
Estes são alguns dos exemplos de loop VBA que tentei cuidar neste artigo. Espero que seja preciso o suficiente para esclarecer alguns conceitos.
Coisas para lembrar
- Enquanto estiver usando o loop for para trás, verifique se o número inicial deve ser maior que o número final e vice-versa.
- Em Fazer enquanto loop, verifique se você está usando Loop para fechar o fazer enquanto antes de terminar todo o código VBA. Caso contrário, o sistema emitirá um erro do compilador com a mensagem de erro "Do Without Loop".
Você pode fazer o download deste modelo de Excel VBA Loops aqui - Modelo de VBA Loops Excel
Artigos recomendados
Este foi um guia para os Excel VBA Loops. Aqui discutimos os tipos de loops VBA do Excel e como usá-los, além de alguns exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -
- Função VBA no Excel
- Função VBA VLOOKUP
- Atalhos de teclado do Excel
- Fórmula de percentil do Excel