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 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 -

  1. Função VBA no Excel
  2. Função VBA VLOOKUP
  3. Atalhos de teclado do Excel
  4. Fórmula de percentil do Excel

Categoria: