Aula sobre o Macro Excel VBA: Explicação Linha por Linha ✨
Bem-vindos, amados alunos, a mais uma aula prática no incrível universo do VBA! Hoje, iremos explorar um macro poderoso que realiza a verificação de dados, busca correspondências em uma base de dados e preenche informações em uma planilha específica. Vamos destrinchar linha por linha, para que você compreenda sua lógica e como aplicá-la em seus projetos.
1. Introdução ao Macro
Este código VBA (Sub ara()) é utilizado para:
- Limpar os dados existentes em uma planilha chamada "form";
- Buscar correspondências na planilha "data", com base em uma lista fornecida na planilha"liste";
- Preencher os resultados na planilha "form", realizando cálculos com os dados encontrados.
Agora, vamos explorar cada linha para entender sua lógica.
2. Explicação Detalhada – Linha por Linha
Configuração Inicial
vba
Set sf = Sheets("form") ' Define a planilha "form" como referência.
Set Sd = Sheets("data") ' Define a planilha "data" como referência.
Set sl = Sheets("liste") ' Define a planilha "liste" como referência.
➡️ Essas linhas criam atalhos para as planilhas, simplificando o uso no restante do código. O uso de Set associa o objeto Sheets a variáveis (sf, Sd, e sl), facilitando a manipulação dessas planilhas.
Limpando Conteúdos da Planilha “form”
vba
sf.Range("A2:G65536").ClearContents
➡️ Esta linha limpa o intervalo de células A2:G65536 na planilha "form", removendo os dados existentes antes de adicionar os novos resultados.
Tratamento de Erros
vba
On Error Resume Next
➡️ Ativa o tratamento de erros. Caso ocorra um erro no código (ex.: valores não encontrados), o programa continuará a execução sem interromper o macro.
Laço para Iterar sobre a Lista
vba
For a = 2 To sl.Cells(65536, 1).End(xlUp).Row
➡️ Este laço percorre todas as linhas da coluna A na planilha "liste", começando da linha 2 até a última célula preenchida (usando End(xlUp) para encontrar a última linha ocupada).
Inicializando Variável e Buscando Correspondência
vba
sat = 0 ' Inicializa a variável que armazenará a linha da correspondência.
sat = Sd.Columns("A").Find(sl.Cells(a, 1)).Row
➡️ Aqui:
- A variável saté inicializada com 0.
- A função Find()procura na coluna A da planilha"data"por um valor que corresponda ao da célula atual em"liste".
- Caso a correspondência seja encontrada, satarmazenará o número da linha onde o valor foi encontrado.
Verificação de Correspondência
 If sat = 0 Then
    MsgBox “<” & sl.Cells(a, 1) & “> ESTOQUE CODIFICADO NÃO FOI ENCONTRADO NOS REGISTROS”
    Exit Sub
End If
➡️ Se sat for igual a 0 (nenhuma correspondência encontrada):
- Exibe uma mensagem informando que o valor não foi encontrado (usando MsgBox).
- Encerra o macro com o comando Exit Sub.
Preenchendo os Resultados
 sf.Cells(a, 1) = Sd.Cells(sat, 5).Value ‘ Copia valor da coluna 5.
sf.Cells(a, 2) = Sd.Cells(sat, 6).Value ‘ Copia valor da coluna 6.
sf.Cells(a, 3) = Sd.Cells(sat, 7).Value ‘ Copia valor da coluna 7.
sf.Cells(a, 4) = Sd.Cells(sat, 2).Value ‘ Copia valor da coluna 2.
sf.Cells(a, 5) = Sd.Cells(sat, 4).Value ‘ Copia valor da coluna 4.
sf.Cells(a, 6) = Sd.Cells(sat, 3).Value ‘ Copia valor da coluna 3.
sf.Cells(a, 7) = sl.Cells(a, 2) ‘ Copia o valor da coluna B de “liste”.
sf.Cells(a, 8) = sf.Cells(a, 6) * sf.Cells(a, 7) * 6 ‘ Realiza cálculo.
➡️ Para cada linha na lista, os valores da linha correspondente na planilha "data" são copiados para a planilha "form", nas respectivas colunas (1 a 7). Além disso:
- A coluna 8 realiza um cálculo com os valores copiados, multiplicando os dados da coluna 6, coluna 7, e o número 6.
Encerrando o Laço
Next a
➡️ Finaliza a iteração atual e passa para a próxima linha da planilha "liste".
3. Aplicação Prática
Este macro é útil para cenários em que:
- Você possui uma lista de dados para verificar (ex.: códigos de estoque na planilha "liste");
- Deseja encontrar e extrair informações correspondentes em uma base de dados maior (planilha "data");
- Necessita preencher automaticamente outra planilha (planilha "form") com os resultados encontrados.
4. Agradecimento Final
Queridos alunos, espero que esta aula tenha sido uma oportunidade de aprendizado valiosa! Entender cada linha de um código VBA é fundamental para desenvolver suas habilidades de programação e aplicação prática em planilhas. Continuem se esforçando e aprendendo, pois o conhecimento é o caminho mais poderoso para a evolução.
📘 Prof. Expedito Marcondes 📧 Tire-Dúvidas: [email protected]
🚀✨ Até a próxima aula, prontos para desbravar ainda mais o universo do Excel VBA!

