Uma das grandes vantagens de usar VBA no Excel é a capacidade de repetir uma ação automaticamente para muitas células ou planilhas sem precisar fazer isso manualmente. Para isso, o VBA usa os chamados loops, que são estruturas de código que repetem um bloco de instruções várias vezes. Neste artigo iremos mostrar os três tipos de loops mais usados no VBA: o For, o For Each e o Do While.
O que é um loop?
Um loop é uma estrutura de programação que executa um bloco de código repetidamente até que uma condição seja atendida ou um número de repetições seja alcançado. No VBA do Excel, os loops são usados o tempo todo para percorrer listas de dados, formatar células, copiar informações de uma aba para outra e muito mais.
O loop For…Next
O loop For é usado quando você sabe exatamente quantas vezes quer repetir uma ação. Ele funciona com um contador que vai de um número inicial até um número final.
A sintaxe básica é:
For i = 1 To 10
' código que será repetido
Next i
Nesse exemplo, o código dentro do loop vai ser executado 10 vezes. A variável i começa em 1 e vai até 10, incrementando 1 a cada repetição.
Exemplo prático: preencher as células A1 até A10 com os números de 1 a 10:
Sub PreencherNumeros()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
Usando Step para controlar o incremento
Por padrão, o contador aumenta 1 a cada repetição. Mas você pode mudar isso usando a palavra Step. Por exemplo, para percorrer apenas os números pares de 2 a 20:
For i = 2 To 20 Step 2
' código executado para 2, 4, 6, 8... 20
Next i
Você também pode usar Step com valor negativo para fazer o loop de trás para frente:
For i = 10 To 1 Step -1
' percorre de 10 até 1
Next i
O loop For Each
O For Each é usado para percorrer todos os itens de uma coleção, como todas as células de um intervalo ou todas as planilhas de uma pasta de trabalho. Ele é mais simples que o For quando você não precisa de um contador numérico.
Exemplo prático: percorrer todas as células de A1 até A10 e pintar de amarelo as que tiverem valor maior que 5:
Sub DestacaValores()
Dim cel As Range
For Each cel In Range("A1:A10")
If cel.Value > 5 Then
cel.Interior.Color = RGB(255, 255, 0)
End If
Next cel
End Sub
Exemplo prático: percorrer todas as planilhas da pasta de trabalho e exibir o nome de cada uma:
Sub ListarPlanilhas()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
MsgBox ws.Name
Next ws
End Sub
O loop Do While
O Do While é usado quando você não sabe quantas vezes o loop vai precisar se repetir. Ele continua executando enquanto uma condição for verdadeira.
A sintaxe básica é:
Do While condição
' código que será repetido
Loop
Exemplo prático: percorrer uma lista de dados a partir da linha 2 até encontrar a primeira célula vazia na coluna A:
Sub PercorrerLista()
Dim linha As Integer
linha = 2
Do While Cells(linha, 1).Value <> ""
' processa a célula atual
Debug.Print Cells(linha, 1).Value
linha = linha + 1
Loop
End Sub
Esse tipo de loop é muito útil quando você não sabe quantas linhas de dados existem na tabela.
Como encontrar a última linha com dados
Uma técnica muito usada com loops no VBA é encontrar a última linha com dados antes de iniciar o loop. Isso garante que o loop percorra apenas as linhas com dados, sem se perder em linhas vazias:
Dim ultimaLinha As Long ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row
Depois você usa essa variável no loop For:
For i = 2 To ultimaLinha
' processa a linha i
Next i
Cuidado com loops infinitos
No Do While, se a condição nunca se tornar falsa, o loop vai rodar para sempre, travando o Excel. Sempre garanta que a condição do loop vai eventualmente se tornar falsa. Se isso acontecer por acidente, pressione Ctrl+Break para interromper a execução do código.
Se você curtiu esse artigo onde mostramos como usar loops no VBA do Excel, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.