/ / Excel VBA Loop

Excel VBA Loop

Loop único | Laço duplo | Laço triplo | Do While Loop

Looping é uma das técnicas de programação mais poderosas. UMA laço em Excel VBA permite percorrer um intervalo de células com apenas algumas linhas de códigos.

Loop único

Você pode usar um único loop para percorrer um intervalo unidimensional de células.

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

Resultado quando você clica no botão de comando na folha:

Loop único no Excel VBA

Explicação: As linhas de código entre For e Next serão executadas seis vezes. Para i = 1, o Excel VBA insere o valor 100 na célula na interseção da linha 1 e da coluna 1. Quando o Excel VBA alcança o Next i, ele aumenta i com 1 e retorna à instrução For. Para i = 2, o Excel VBA insere o valor 100 na célula na interseção da linha 2 e coluna 1, etc.

Nota: é uma boa prática sempre recuar (tab) o código entre as palavras For e Next. Isso torna seu código mais fácil de ler.

Laço duplo

Você pode usar um loop duplo para percorrer um intervalo bidimensional de células.

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

Resultado quando você clica no botão de comando na folha:

Loop Duplo no Excel VBA

Explicação: Para i = 1 e j = 1, o Excel VBA insere o valor 100 na célula na interseção da linha 1 e da coluna 1. Quando o Excel VBA alcança o Próximo j, ele aumenta j com 1 e retorna para a instrução For j. Para i = 1 e j = 2, o Excel VBA insere o valor 100 na célula na interseção da linha 1 e da coluna 2. Em seguida, o Excel VBA ignora o Próximo j porque j só é executado de 1 a 2. Quando o Excel VBA atinge o Próximo i , aumenta i com 1 e salta de volta para a declaração For i. Para i = 2 e j = 1, o Excel VBA insere o valor 100 na célula na interseção da linha 2 e coluna 1, etc.

Laço triplo

Você pode usar um loop triplo para percorrer intervalos bidimensionais em várias planilhas do Excel.

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Explicação: A única mudança feita em comparação com o código para o loop duplo é que adicionamos mais um loop e adicionamos Worksheets (c). na frente de Células para obter o intervalo bidimensional na primeira planilha para c = 1, a segunda planilha para c = 2 e a terceira planilha para c = 3. Faça o download do arquivo do Excel para ver esse resultado.

Do While Loop

Além do loop For Next, existem outros loops no Excel VBA. Por exemplo, o Do While Loop. O código colocado entre Do While e Loop será repetido enquanto a parte após Do While for verdadeira.

1. Coloque um botão de comando na sua planilha e adicione as seguintes linhas de código:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

Resultado quando você clica no botão de comando na folha:

Do While Loop

Explicação: contanto que i seja menor que 6, o VBA do Excel insere o valor 20 na célula na interseção da linha i e coluna 1 e incrementa i por 1. No Excel VBA (e em outras linguagens de programação), o símbolo "=" significa torna-se. Isso não significa igual. Então i = i + 1 significa i torna-se i + 1. Em outras palavras: pegue o valor presente de i e adicione 1 a ele. Por exemplo, se i = 1, i se torna 1 + 1 = 2. Como resultado, o valor 20 será colocado na coluna A cinco vezes (não seis porque o Excel VBA para quando eu for igual a 6).

2. Digite alguns números na coluna A.

Qualquer número de linhas

3. Coloque um botão de comando na sua planilha e adicione as seguintes linhas de código:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

Resultado quando você clica no botão de comando na folha:

Avançado Do While Loop

Explicação: enquanto Cells (i, 1).O valor não está vazio (<> significa não igual a), o Excel VBA insere o valor na célula na interseção da linha i e coluna 2, que é 10 maior que o valor na célula na interseção da linha ie coluna 1 Excel VBA pára quando i é igual a 7 porque Cells (7, 1) .Value está vazio. Esta é uma ótima maneira de percorrer qualquer número de linhas em uma planilha.

Leia também: