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,
sat
armazenará 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!