Capítulo 19: Lógica com VBA II (Laços de Repetição)
🎯 Objetivo da Aula
O que diferencia um humano de uma máquina é que a máquina não se cansa de fazer a mesma coisa mil vezes. Na programação, usamos os Loops (Laços de Repetição) para isso.
Nesta aula, você aprenderá a usar o comando For…Next. O objetivo é criar um script que percorra uma lista de faturas e pinte automaticamente de vermelho as que estão com pagamento atrasado, linha por linha, em frações de segundo.
🏢 O Cenário Prático (Seu Desafio)
Situação: O setor financeiro da FastLog tem uma planilha com 500 faturas. Eles precisam verificar quais já venceram e destacar essas linhas. Fazer isso manualmente demora muito. Missão: Você deve escrever um código que “leia” a planilha da linha 2 até a linha 10 (ou 500!) e, para cada linha, verifique o status. Se estiver “Atrasado”, o código deve pintar o fundo da célula de vermelho sozinho.
🧠 Fundamentos: Teoria do Excel (Laços de Repetição)
O Loop For funciona como um contador:
- Você diz onde ele começa (Linha 2).
- Você diz onde ele termina (Linha 10).
- Ele executa o código e pula para a próxima linha (
Next).
A sintaxe do FOR no código:
📖 Exemplo Guiado: O Relógio que Conta Sozinho
Vamos fazer o Excel contar de 1 a 5 na tela sem precisarmos arrastar a célula.
Passo a Passo
- Abra o Editor de Código (Alt + F11).
- Insira um Módulo e digite:
- Rode o código (F5).
- Volte para a planilha e veja a Coluna A. O Excel escreveu do Número 1 ao 5 sozinho!
✅ Resultado Esperado (Exemplo)
O Excel “viaja” pela coluna escrevendo os números linha por linha em milissegundos.
🔑 Gabarito de Fórmulas
(Lógica do Código)
- For i = 1 To 5: Inicia o loop. A letra
ié a variável que muda (1, depois 2, depois 3…). - Next i: Manda o Excel repetir o processo com o próximo número.
🛠️ Prática Obrigatória 1: Auditor de Cobrança Automático
Vamos usar o Loop para “ler” uma tabela inteira e pintar de vermelho quem não pagou.
Passo 1: Montando a Base de Faturas
Crie uma planilha com os seguintes dados:
- A1:
ID Fatura| B1:Status - Preencha de A2 até A10 com números quaisquer.
- Na coluna B, escreva “Pago” ou “Atrasado” aleatoriamente.
Passo 2: Escrevendo o Código com Loop
- Aperte Alt + F11 para abrir o editor de código.
- No seu módulo, digite o seguinte código:
Passo 3: Executando o Processamento em Lote
- Volte ao Excel.
- Vá em Desenvolvedor > Macros, escolha
ColorirAtrasadose clique em Executar.
✅ Resultado Esperado (Prática 1)
Todas as células que continham o texto “Atrasado” foram pintadas de vermelho instantaneamente. Você processou vários dados em lote.
🔑 Gabarito de Fórmulas
| Código | Tradução |
|---|---|
| Cells(i, 2) | Significa Célula(Linha, Coluna). Como o i muda, ele lê (2,2), (3,2)… |
| ColorIndex = 3 | Código interno do Excel para a cor vermelha. |
🛠️ Prática Obrigatória 2: Limpador de Linhas Vazias
Muitas vezes recebemos planilhas de sistemas (como SAP) cheias de linhas em branco no meio dos dados. Vamos criar um robô que “pula” as linhas e apaga as vazias.
Passo 1: O Caos
Na Planilha 2, escreva nomes de produtos na Coluna A (A1 até A10), mas deixe as linhas A3, A5 e A8 totalmente vazias.
Passo 2: O Robô Faxineiro
No VBA, crie a nova Sub:
Passo 3: O Teste
Execute a Macro.
✅ Resultado Esperado (Prática 2)
O Excel encolherá sua tabela, apagando todas as linhas vazias e juntando os dados.
🔑 Gabarito de Fórmulas
| Código | Tradução |
|---|---|
| Step -1 | Faz o Loop contar de trás pra frente (10, 9, 8…). |
| .EntireRow.Delete | Comando que deleta a linha inteira da planilha. |
📤 Instruções de Entrega (Microsoft Teams)
Após finalizar as duas práticas obrigatórias:
- Salve como .XLSM.
- Nome:
Atividade_19_SeuNome_SeuSobrenome.xlsm - No Microsoft Teams, envie o arquivo na tarefa “Capítulo 19 - Lógica com VBA II”.
- Clique em Entregar.
💡 Checkpoint de Lógica
O Loop é o motor de qualquer software. Quando você vê uma barra de carregamento ou quando o seu e-mail baixa 50 mensagens de uma vez, é um Loop For ou While rodando por trás. No Excel, o Loop transforma você de um digitador de dados em um Arquiteto de Processos.
🔥 Desafio de Fixação (Opcional): Loop com Soma Acumulada
Crie uma nova macro que percorra as linhas e vá somando o valor dos fretes em uma variável, mostrando o Total Final em um MsgBox no final do loop.
- Desafio: Crie uma variável
Dim total As Double. - Lógica: Dentro do laço (For), use
total = total + Cells(i, 3).Value(supondo que os valores estejam na coluna 3). - Fim: Após o
Next i, coloque umMsgBox "O total é: " & total.
✅ Resultado Esperado (Desafio)
O seu código fará exatamente o mesmo trabalho que a função =SOMA(), mas você construiu a matemática inteira do zero na memória RAM do computador!