A estrutura básica de uma macro em VBA é sempre um bloco que começa com Sub NomeDaMacro() e termina com End Sub — entre essas duas linhas ficam os comandos que o Excel executa em ordem, de cima para baixo, podendo declarar variáveis com Dim e incluir comentários (linhas iniciadas por um apóstrofo ‘) que o Excel ignora completamente ao rodar o código.
Você já abriu o editor VBA do Excel pela primeira vez, viu um código pronto (seu ou copiado da internet) e travou diante de palavras como Sub, Dim, End If, sem entender qual é a função de cada uma dentro daquele bloco de texto?
Sem entender a estrutura básica do código, cada macro nova vira um exercício de copiar e colar sem saber exatamente o que ajustar quando algo não funciona como esperado, e qualquer erro de digitação parece um mistério indecifrável.
Neste artigo iremos mostrar as três janelas principais do editor VBA, a estrutura Sub/End Sub que envolve toda macro, como declarar variáveis com Dim, como comentar o código e como executar e testar uma macro passo a passo.
As três janelas principais do editor VBA
Ao abrir o editor VBA (atalho Alt+F11), três áreas organizam o ambiente: o Project Explorer, à esquerda, lista todas as pastas de trabalho abertas e seus módulos, planilhas e formulários; a janela de Propriedades, abaixo dele, mostra as propriedades do item selecionado (nome, cor, visibilidade); e a janela de código, ocupando a maior parte da tela, é onde o código VBA é efetivamente escrito e editado. Para ver o passo a passo detalhado de como inserir um módulo novo dentro desse ambiente, veja o artigo sobre como acessar o editor VBA e inserir um módulo.
O bloco Sub … End Sub
Toda macro (também chamada de procedimento ou sub-rotina) começa com a palavra Sub, seguida do nome escolhido para ela e parênteses vazios — por exemplo, Sub FormatarRelatorio() — e termina obrigatoriamente com End Sub. Tudo o que está escrito entre essas duas linhas é executado pelo Excel, de cima para baixo, uma instrução por vez, quando a macro é chamada.
| Linha | Código | O que faz |
|---|---|---|
| 1 | Sub FormatarRelatorio() | Início da macro, define o nome |
| 2 | Range(“A1”).Value = “Relatório” | Escreve um texto na célula A1 |
| 3 | Range(“A1”).Font.Bold = True | Deixa o texto em negrito |
| 4 | End Sub | Fim da macro |
Declarando variáveis com Dim
Uma variável é um espaço reservado na memória para guardar um valor temporário durante a execução da macro — um número, um texto, ou uma referência a uma célula. Ela é declarada com a palavra Dim, seguida do nome escolhido e, opcionalmente, do tipo de dado que ela vai guardar: Dim total As Double cria uma variável chamada total, preparada para guardar um número com casas decimais. Embora o VBA funcione mesmo sem declarar variáveis, declarar com Dim ajuda o Excel a avisar sobre erros de digitação no nome da variável mais adiante no código.
Tipos de variável mais usados
| Tipo | Guarda | Exemplo |
|---|---|---|
| String | Texto | Dim nome As String |
| Integer | Número inteiro pequeno | Dim contador As Integer |
| Long | Número inteiro grande | Dim linha As Long |
| Double | Número com casas decimais | Dim total As Double |
| Boolean | Verdadeiro ou Falso | Dim ativo As Boolean |
| Variant | Qualquer tipo de dado | Dim valor As Variant |
Na prática, Long costuma ser preferido a Integer para contar linhas de planilha, já que uma planilha do Excel tem mais de um milhão de linhas — um número maior do que o Integer consegue armazenar sem gerar erro.
Comentários no código
Qualquer linha (ou parte de uma linha) que comece com um apóstrofo ‘ é um comentário — o Excel simplesmente ignora esse trecho ao executar a macro. Comentários servem para explicar, em português claro, o que uma parte do código faz, facilitando a manutenção meses depois: ‘ Esta linha limpa a coluna A antes de preencher os dados novos.
Indentação e legibilidade
Embora o VBA não exija indentação (espaços no início da linha) para funcionar, usar espaços ou tabulações para deslocar o código dentro de estruturas como If…End If ou For…Next deixa muito mais fácil enxergar onde cada bloco começa e termina, especialmente em macros mais longas com várias estruturas aninhadas.
Estruturas de decisão e repetição
Além do bloco Sub/End Sub, duas estruturas aparecem na maioria das macros: a estrutura condicional If…Then…End If, que executa um trecho de código só quando uma condição é verdadeira, e os loops (laços de repetição), que executam o mesmo trecho de código várias vezes. Como o assunto de loops é extenso por si só, ele é tratado em detalhe no artigo sobre como usar loops no VBA: For, For Each e Do While.
Executando e testando o código
Com o cursor dentro do bloco Sub/End Sub, a tecla F5 executa a macro inteira de uma vez. Para acompanhar linha por linha (útil quando algo não funciona como esperado), a tecla F8 executa um comando por vez, destacando em amarelo a linha que será executada a seguir. A Janela Imediata (atalho Ctrl+G) permite testar comandos avulsos e ver o valor de uma variável no meio da execução, digitando ?nomeDaVariavel e pressionando Enter.
Erros comuns para quem está começando
Esquecer o End Sub no final de uma macro, ou o End If no final de uma condição, gera um erro de compilação assim que a macro é executada. Outro erro frequente é confundir o sinal de igual usado para atribuir um valor (total = 10) com o sinal de igual usado para comparar dentro de um If (If total = 10 Then) — na sintaxe do VBA, o mesmo símbolo serve para os dois casos, mas o contexto (dentro ou fora de um If) muda o que ele significa.
Disponibilidade
O editor VBA e a estrutura de código descrita neste artigo estão disponíveis em todas as versões do Excel para Windows e Mac que suportam macros (Excel 2007 em diante). O Excel Online e o Google Sheets não têm um editor VBA nativo — o Google Sheets usa uma linguagem diferente, o Apps Script, baseada em JavaScript.
Perguntas frequentes
Preciso sempre declarar as variáveis com Dim antes de usá-las?
Não é obrigatório por padrão, mas é uma boa prática. Adicionando a linha Option Explicit no topo do módulo, o Excel passa a exigir a declaração de toda variável com Dim, o que ajuda a identificar erros de digitação no nome delas antes mesmo de rodar a macro.
Qual a diferença entre um comentário e uma linha de código desativada?
Não há diferença técnica — colocar um apóstrofo no início de uma linha de código existente também a transforma num comentário, efetivamente desativando aquele comando sem precisar apagá-lo, uma técnica útil para testar variações de uma macro.
O que acontece se eu esquecer o End Sub no final da macro?
O VBA aponta um erro de compilação assim que você tenta rodar ou fechar o editor, indicando que o procedimento Sub está incompleto. Toda macro precisa ter exatamente um End Sub correspondente ao Sub que a abriu.
Veja também: VBA no Excel para Iniciantes: Guia Completo para Começar do Zero e Como Acessar o Editor VBA no Excel e Inserir um Módulo.
Compartilhe ou Comente
Se você curtiu esse artigo aonde mostramos a estrutura básica do código VBA no Excel, incluindo o bloco Sub/End Sub, a declaração de variáveis com Dim, os comentários com apóstrofo e como executar o código passo a passo, 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.
Você já travou numa macro copiada da internet sem entender o que cada linha fazia? Prefere testar o código de uma vez com F5 ou passo a passo com F8? Conta para nós nos comentários!