Se você estiver escrevendo um programa VBA e quiser executar a mesma tarefa várias vezes, poderá fazer isso usando VBA para loops. VBA é uma linguagem de programação sequencial. Cada linha de código é executada de cima para baixo até que não haja mais linhas de código para ler. Se você quiser voltar e executar uma tarefa, você deve forçar usando o código de macro. Você obtém resultados com loop.
O For Loop no VBA é um dos tipos mais comuns de loop. O loop For tem duas formas: For Next e For Each In Next. O loop For é normalmente usado para mover-se sequencialmente por uma lista de itens ou números. Para encerrar o loop For em qualquer ponto, podemos usar a instrução exit. For Loop irá girar e girar até que atenda a condição final. Assim que a condição final for atendida, o fluxo de programação continuará para baixo, em sua direção natural.
O loop For… Next tem a seguinte sintaxe: For counter = start_counter To end_counter 'Faça algo aqui (seu código) Próximo contador
Na verdade, estamos criando um loop que usa variável contador como o "guardião do tempo" do loop. Nós o definimos com um valor igual a start_counter no início do loop e, em seguida, aumente-o em 1 durante cada loop até atingir a condição final. O loop será executado até o momento em que o valor do contador torna-se igual a end_counter. O loop é executado pela última vez quando os valores acima correspondem e, em seguida, o loop para.
Todos os itens acima podem ser confusos para algumas pessoas, então vamos nos preparar e começar a aprender For Loop no Excel com alguns exemplos.
- Crie uma nova pasta de trabalho do Excel e salve-a com a extensão .xlsm
- Para iniciar a tela do editor do Visual Basic, use ALT + F11
- Inserir Novo Módulo
- Copie o código abaixo no módulo padrão VB
Loop 1 (Exibindo número com msgbox)
Sub Loop1 () Dim StartNumber As Integer Dim EndNumber As Integer EndNumber = 5 For StartNumber = 1 To EndNumber MsgBox StartNumber & "é" & "Your StartNumber" Next StartNumber End Sub
Explicação do código:
- O código VBA precisa que você atribua valor a StartNumber, onde EndNumber são variáveis declaradas como inteiros como ponto de partida para o seu loop
- Esses valores podem ser qualquer número e temos EndNumber como 5
- StartNumber é iniciado em 1
- Para StartNumber = 1 To EndNumber significa que o código começará de 1 (StartNumber) a 5 (EndNumber)
- MsgBox StartNumber & "is" & "Your StartNumber" exibirão a seguinte caixa de mensagem
Loop2 (valores de preenchimento)
Sub Loop2 () 'Preenche as células A1: A56 com valores de X fazendo um loop' --- Comentário 'Aumenta o valor de X em 1 em cada loop' --- Comentário Dim X como Inteiro Para X = 1 a 56 Faixa ("A "& X) .Value = X Próximo X End Sub
Explicação do código:
- Atribuímos X como um inteiro
- Para X = 1 a 56; isso vai começar com 1 e continuar até 56 com um incremento de 1 a cada vez
- Intervalo ("A" e X) .Valor = X; esta linha armazenará o valor de X e passará do intervalo A1 a A56
Loop3 (preencher as células com a cor de fundo)
Sub Loop3 () 'Preenche as células B1: B56 com as 56 cores de fundo' --- Comentário Dim X como inteiro para X = 1 a 56 Intervalo ("B" e X) .Selecione com Seleção.Interior .ColorIndex = X .Padrão = xlSolid End With Next X End Sub
Explicação do código:
- Atribuímos X como um inteiro
- Para X = 1 a 56 começará com 1 e continuará até 56 com um incremento de 1 a cada vez
- Intervalo ("B" e X) .Selecione; esta linha irá armazenar o valor de X e selecionar a célula B1 até B56
- As próximas 4 linhas, ou seja, com Selection.Interior, selecionará o índice de cor do interior e tomará o valor de X desse índice de cor de modo que 1 pertença à cor preta; 2 pertence à cor branca; 3 para vermelho e assim por diante
Loop 4 (valores de preenchimento com incremento de 2)
Por padrão, o valor da Etapa é 1 para frente, no entanto, pode ser definido como um número maior que 1.
Sub Loop4 () 'Preenche cada segunda célula de C1: C50 com valores de X' --- Comentário Dim X As Integer For X = 1 To 50 Step 2 Range ("C" & X) .Value = X Next X End Sub
Explicação do código:
- Atribuímos X como um inteiro
- Para X = 1 a 50 Etapa 2; isso vai começar com 1 em X até 50 com um incremento de 2 a cada vez
- Intervalo ("C" e X) .Valor = X; esta linha armazenará o valor de X e passará para a faixa C1 a C50
Loop 5 (VBA For Loop em Reverso com Instrução STEP)
Não é necessário que o contador no loop For se mova apenas dos valores baixos para os maiores; em vez disso, o loop For pode ser executado para trás, ou seja, valores altos para baixos.
Mesmo que o valor Step seja 1 por padrão, no entanto, ele pode ser definido como um número na ordem inversa.
Sub Loop5 () 'Preenche células de D1: D50 com valores de X' --- Comentário 'Neste caso, X diminui em 1' --- Comentário Dim X como inteiro, linha como inteiro Linha = 1 Para X = 50 para 0 Etapa -1 Intervalo ("D" e Linha). Valor = X Linha = Linha + 1 Próximo X End Sub
Explicação do código:
- Atribuímos X e Row como inteiro
- A linha contém o valor 1
- Para X = 50 a 0 Etapa -1; isso vai começar de 50 com decréscimo de 1 em X até 0
- Intervalo ("D" e Linha) .Valor = X; esta linha armazenará o valor de X e passará para o intervalo D1 a D50
Loop 6 (preenche cada segunda célula em reverso com STEP-2)
No exemplo do loop For acima, podemos usar Step and order para ver se o loop For funciona na direção para frente ou para trás.
Sub Loop6 () 'Preenche cada segunda célula de E1: E100 com valores de X' --- Comentário 'Neste caso, X diminui em 2' --- Comentário Dim X como inteiro, Linha como inteiro Linha = 1 Para X = 100 Para 0 Passo -2 Faixa ("E" e Linha). Valor = X Linha = Linha + 2 Próximo X Fim Sub
Explicação do código:
- Atribuímos X e Row como inteiro
- A linha contém o valor 1
- Para X = 100 a 0 Etapa -2; isso vai começar de 100 com decréscimo de 2 em X até 0
- Intervalo ("E" e Linha) .Valor = X; esta linha armazenará o valor de X e passará do intervalo E1 a E100
Loop 7 (Loop For com condição IF: preenche células a partir de uma célula específica)
Isso irá preencher as células da célula F11 com o valor 11 até que X atenda à condição IF
Sub Loop7 () 'Começa a preencher as células F11: F100 com valores de X' --- Comentário 'Isso sairá do loop após 50' --- Comentário Dim X como Inteiro Para X = 11 a 100 Intervalo ("F" & X) .Value = X If X = 50 Then MsgBox ("Bye Bye") Exit For End If Next X End Sub
Explicação do código:
- Atribuímos X como um inteiro
- Para X = 11 a 100; começará em 11 com incremento de 1 em X até que a condição atenda
- Intervalo ("F" e X) .Valor = X; esta linha armazenará o valor de X e passará para a faixa F11 até que a condição atenda
- Depois de inserir o valor 50 na célula F50, a seguinte caixa de mensagem será exibida
Conclusão: Com os 7 exemplos acima, podemos aplicar o loop For em nossa parte regular ou em qualquer parte de automação.
Se você gostou de nossos blogs, compartilhe com seus amigos no Facebook. E você também pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar, complementar ou inovar nosso trabalho e torná-lo melhor para você. Escreva-nos no site de e-mail