Programar uma macro no Excel com VBA é uma das maneiras mais eficientes de automatizar tarefas repetitivas. Com algumas linhas de código, é possível preencher células, organizar tabelas, criar relatórios, formatar planilhas, calcular valores, importar dados e executar várias operações automaticamente.
O VBA, sigla para Visual Basic for Applications, é a linguagem de programação integrada ao Excel e a outros programas do Microsoft Office.
Neste guia, você vai aprender desde a ativação do ambiente de programação até a criação de uma macro completa em VBA.
O que é uma macro no Excel?
Uma macro é uma sequência de comandos que o Excel pode executar automaticamente.
Imagine que todos os dias você precise:
- Abrir uma planilha;
- Formatar uma tabela;
- Colocar os títulos em negrito;
- Ajustar as colunas;
- Aplicar uma cor;
- Calcular um total;
- Criar um relatório.
Em vez de repetir tudo manualmente, você pode transformar essa sequência em uma macro.
Depois, basta executar a macro e o Excel realizará as tarefas automaticamente.
O que é VBA?
VBA significa Visual Basic for Applications.
É a linguagem utilizada para criar macros dentro do Excel.
Com VBA, você consegue controlar praticamente todos os elementos importantes de uma planilha, incluindo:
- Células;
- Linhas;
- Colunas;
- Planilhas;
- Fórmulas;
- Gráficos;
- Tabelas;
- Arquivos;
- Formatação;
- Filtros;
- Dados;
- Caixas de diálogo;
- Formulários.
O VBA permite transformar uma planilha comum em uma verdadeira ferramenta automatizada.
Como ativar a guia Desenvolvedor
Antes de programar, é necessário ativar a guia Desenvolvedor, que normalmente fica oculta no Excel.
No Windows, faça o seguinte:
- Abra o Excel;
- Clique em Arquivo;
- Entre em Opções;
- Clique em Personalizar Faixa de Opções;
- Na lista de guias principais, marque Desenvolvedor;
- Clique em OK.
Depois disso, a guia Desenvolvedor aparecerá na parte superior do Excel.
É nela que ficam os principais recursos para trabalhar com macros e VBA.
Como abrir o Editor do VBA
Depois de ativar a guia Desenvolvedor:
- Clique em Desenvolvedor;
- Clique em Visual Basic.
Outra maneira rápida de abrir o editor é pressionar:
Alt + F11
Será aberta uma nova janela chamada Editor do Visual Basic.
É dentro dessa área que você escreverá o código VBA.
Como criar um módulo
No Editor do Visual Basic, procure o projeto correspondente à sua pasta de trabalho.
Depois:
- Clique com o botão direito no projeto;
- Selecione Inserir;
- Clique em Módulo.
O Excel criará algo semelhante a:
Module1
Uma janela em branco será aberta.
É nessa janela que você poderá escrever suas macros.
Sua primeira macro em VBA
Vamos começar com um exemplo extremamente simples.
Digite:
Sub MinhaPrimeiraMacro()
MsgBox "Olá! Esta é minha primeira macro no Excel."
End Sub
Essa é uma macro completa.
A palavra Sub indica o início de um procedimento.
O nome da macro é:
MinhaPrimeiraMacro
E End Sub indica o final do procedimento.
Como executar a macro
Depois de escrever o código:
- Volte para o Excel;
- Clique em Desenvolvedor;
- Clique em Macros;
- Selecione
MinhaPrimeiraMacro; - Clique em Executar.
Uma caixa de mensagem aparecerá com o texto:
Olá! Esta é minha primeira macro no Excel.
Também é possível executar uma macro diretamente pelo Editor do VBA usando a tecla F5.
Criando uma macro que escreve em uma célula
Agora vamos fazer algo mais útil.
Sub EscreverNaCelula()
Range("A1").Value = "Olá, Excel!"
End Sub
Quando essa macro for executada, o Excel colocará:
Olá, Excel!
na célula A1.
Escrevendo em várias células
Você também pode preencher várias células usando VBA.
Sub PreencherTabela()
Range("A1").Value = "Nome"
Range("B1").Value = "Idade"
Range("C1").Value = "Cidade"
Range("A2").Value = "Carlos"
Range("B2").Value = 35
Range("C2").Value = "São Paulo"
End Sub
Ao executar a macro, uma pequena tabela será criada automaticamente.
Como usar Cells em vez de Range
Outra maneira de trabalhar com células é utilizando Cells.
Por exemplo:
Sub ExemploCells()
Cells(1, 1).Value = "Nome"
Cells(1, 2).Value = "Idade"
Cells(2, 1).Value = "Carlos"
Cells(2, 2).Value = 35
End Sub
A estrutura:
Cells(linha, coluna)
permite trabalhar utilizando números.
Assim:
Cells(1, 1)
corresponde a A1.
Já:
Cells(2, 3)
corresponde a C2.
Como selecionar uma planilha específica
Você também pode informar em qual planilha o código deve trabalhar.
Sub EscreverEmPlanilha()
Worksheets("Planilha1").Range("A1").Value = "Texto automático"
End Sub
Nesse exemplo, o Excel procura a planilha chamada Planilha1 e escreve na célula A1.
Uma prática ainda melhor é evitar depender da planilha atualmente selecionada.
Usando With
O comando With deixa o código mais organizado quando você executa várias operações no mesmo objeto.
Por exemplo:
Sub FormatarCelula()
With Range("A1")
.Value = "Título"
.Font.Bold = True
.Font.Size = 14
End With
End Sub
Nesse caso, várias propriedades são aplicadas à mesma célula.
Como deixar uma célula em negrito
Sub Negrito()
Range("A1").Font.Bold = True
End Sub
Para retirar o negrito:
Sub RemoverNegrito()
Range("A1").Font.Bold = False
End Sub
Alterando o tamanho da fonte
Sub TamanhoFonte()
Range("A1").Font.Size = 20
End Sub
Alterando a cor da fonte
Sub CorFonte()
Range("A1").Font.Color = RGB(255, 0, 0)
End Sub
Nesse exemplo, a fonte ficará vermelha.
Alterando a cor de fundo
Sub CorFundo()
Range("A1").Interior.Color = RGB(255, 255, 0)
End Sub
A célula ficará com fundo amarelo.
Trabalhando com intervalos
O VBA também permite alterar várias células de uma vez.
Sub FormatarTabela()
With Range("A1:C10")
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
End Sub
Nesse exemplo, o intervalo de A1 até C10 será formatado.
Como criar uma fórmula com VBA
Você também pode inserir fórmulas automaticamente.
Sub CriarFormula()
Range("A1").Value = 10
Range("A2").Value = 20
Range("A3").Formula = "=SUM(A1:A2)"
End Sub
O resultado da célula A3 será:
30
Percorrendo células com For
Uma das partes mais importantes do VBA é a criação de loops.
Imagine que você queira preencher as células A1 até A10.
Sub PreencherNumeros()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
O resultado será:
1
2
3
4
5
6
7
8
9
10
O que significa Dim?
O comando Dim é utilizado para declarar uma variável.
Por exemplo:
Dim i As Integer
significa que criamos uma variável chamada i que armazenará números inteiros.
Outro exemplo:
Dim nome As String
Aqui, a variável nome armazenará texto.
Criando uma variável
Sub ExemploVariavel()
Dim nome As String
nome = "Alexandre"
Range("A1").Value = nome
End Sub
A célula A1 receberá o conteúdo da variável.
Usando If
O comando If permite tomar decisões.
Por exemplo:
Sub VerificarValor()
If Range("A1").Value > 100 Then
MsgBox "O valor é maior que 100."
Else
MsgBox "O valor é menor ou igual a 100."
End If
End Sub
Esse tipo de estrutura é fundamental para criar macros inteligentes.
Criando uma macro que analisa uma coluna
Imagine uma tabela em que a coluna A contém valores.
Podemos verificar cada linha:
Sub VerificarValores()
Dim i As Long
For i = 1 To 100
If Cells(i, 1).Value > 100 Then
Cells(i, 2).Value = "Acima de 100"
Else
Cells(i, 2).Value = "Até 100"
End If
Next i
End Sub
A macro verifica as 100 primeiras linhas da coluna A e coloca o resultado na coluna B.
Como encontrar a última linha preenchida
Em planilhas reais, normalmente não sabemos quantas linhas existem.
Em vez de usar:
For i = 1 To 100
podemos descobrir automaticamente a última linha preenchida.
Sub UltimaLinha()
Dim ultimaLinha As Long
ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox "A última linha preenchida é " & ultimaLinha
End Sub
Esse recurso é extremamente útil para criar macros que funcionam com tabelas de tamanhos diferentes.
Criando uma macro para formatar uma tabela inteira
Podemos combinar vários recursos.
Sub FormatarRelatorio()
Dim ultimaLinha As Long
ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row
With Range("A1:C" & ultimaLinha)
.Borders.LineStyle = xlContinuous
.VerticalAlignment = xlCenter
End With
Range("A1:C1").Font.Bold = True
Columns("A:C").AutoFit
End Sub
Essa macro encontra automaticamente a última linha utilizada, adiciona bordas, coloca o cabeçalho em negrito e ajusta a largura das colunas.
Como gravar uma macro automaticamente
Você não precisa saber programar tudo manualmente.
O Excel possui o Gravador de Macros, que transforma suas ações em código VBA.
Para utilizá-lo:
- Abra a guia Desenvolvedor;
- Clique em Gravar Macro;
- Dê um nome à macro;
- Escolha onde ela será armazenada;
- Clique em OK;
- Faça as operações normalmente na planilha;
- Volte à guia Desenvolvedor;
- Clique em Parar Gravação.
O Excel criará o código VBA correspondente às ações realizadas.
Por que usar o Gravador de Macros?
O gravador é excelente para quem está começando.
Ele permite descobrir como determinada ação é representada em VBA.
Por exemplo, você pode gravar uma operação de formatação e depois abrir o código gerado para estudar.
Com o tempo, você pode começar a editar o código e eliminar comandos desnecessários.
Como editar uma macro gravada
Depois de gravar uma macro:
- Abra Desenvolvedor;
- Clique em Macros;
- Selecione a macro;
- Clique em Editar.
O Editor do Visual Basic será aberto mostrando o código criado pelo Excel.
É possível modificar esse código para deixar a macro mais inteligente e flexível.
Como criar um botão para executar uma macro
Uma maneira prática de utilizar macros é colocar um botão diretamente na planilha.
Você pode inserir uma forma, por exemplo, um retângulo.
Depois:
- Insira a forma na planilha;
- Clique com o botão direito nela;
- Escolha Atribuir Macro;
- Selecione a macro;
- Clique em OK.
Agora, ao clicar no botão, a macro será executada.
Como criar uma macro para limpar dados
Um exemplo simples:
Sub LimparDados()
Range("A2:C1000").ClearContents
End Sub
Essa macro remove o conteúdo do intervalo especificado.
Se você também quiser remover a formatação:
Sub LimparTudo()
Range("A2:C1000").Clear
End Sub
Como criar uma macro para salvar o arquivo
Também é possível controlar o salvamento por VBA.
Sub SalvarArquivo()
ThisWorkbook.Save
End Sub
ThisWorkbook representa a pasta de trabalho na qual o código está armazenado.
Como criar uma macro para abrir outro arquivo
Por exemplo:
Sub AbrirArquivo()
Workbooks.Open "C:\Relatorios\dados.xlsx"
End Sub
O caminho precisa corresponder ao local real do arquivo no computador.
Como criar uma macro para copiar dados
Sub CopiarDados()
Range("A1:A10").Copy Destination:=Range("B1")
End Sub
Os dados de A1:A10 serão copiados começando em B1.
Como criar uma macro para excluir linhas
Por exemplo:
Sub ExcluirLinha()
Rows(5).Delete
End Sub
Nesse caso, a quinta linha será excluída.
Tenha cuidado com macros que alteram ou excluem dados, porque essas operações podem ser difíceis de desfazer.
Como usar comentários no VBA
Você pode adicionar comentários ao código utilizando uma aspa simples:
Sub Exemplo()
'Este comando escreve um texto na célula A1
Range("A1").Value = "Olá"
End Sub
Comentários não são executados pelo Excel.
Eles servem para explicar o funcionamento do código.
Como evitar erros em macros
Um código mais robusto pode utilizar tratamento de erros.
Por exemplo:
Sub ExemploErro()
On Error GoTo Erro
Range("A1").Value = 10 / 0
Exit Sub
Erro:
MsgBox "Ocorreu um erro: " & Err.Description
End Sub
Isso permite apresentar uma mensagem ao usuário em vez de simplesmente interromper a execução.
Como depurar uma macro
Quando uma macro não funciona corretamente, você pode usar o próprio Editor do VBA para descobrir onde está o problema.
Uma das ferramentas mais úteis é o F8.
Com o código aberto, pressione F8 para executar uma linha de cada vez.
Assim, é possível observar exatamente em qual parte do código ocorre o erro.
Você também pode colocar um ponto de interrupção em uma determinada linha para interromper a execução naquele ponto.
Como salvar uma planilha com macro
Esse detalhe é extremamente importante.
Um arquivo comum .xlsx não preserva macros VBA.
Para manter o código, salve a pasta de trabalho em um formato compatível com macros, como:
Pasta de Trabalho Habilitada para Macro do Excel (.xlsm)
Outra opção disponível em determinadas situações é o formato .xlsb.
Se você salvar uma planilha contendo macros como .xlsx, o código VBA poderá ser removido.
Segurança ao utilizar macros
Macros podem executar código dentro do computador e, por isso, arquivos recebidos de terceiros devem ser tratados com cuidado.
Não habilite macros de arquivos desconhecidos simplesmente porque o Excel apresentou um aviso solicitando isso.
Uma macro legítima pode automatizar tarefas, mas uma macro maliciosa também pode executar ações prejudiciais.
O ideal é habilitar macros somente quando você souber a origem do arquivo e confiar no código.
Exemplo completo de uma macro
Agora podemos juntar vários conceitos em um único exemplo.
Imagine que a coluna A tenha nomes e a coluna B tenha valores.
A macro abaixo cria uma classificação automaticamente:
Sub CriarRelatorio()
Dim ultimaLinha As Long
Dim i As Long
ultimaLinha = Cells(Rows.Count, 1).End(xlUp).Row
Range("C1").Value = "Classificação"
Range("C1").Font.Bold = True
For i = 2 To ultimaLinha
If Cells(i, 2).Value >= 1000 Then
Cells(i, 3).Value = "Alto"
ElseIf Cells(i, 2).Value >= 500 Then
Cells(i, 3).Value = "Médio"
Else
Cells(i, 3).Value = "Baixo"
End If
Next i
Columns("A:C").AutoFit
MsgBox "Relatório criado com sucesso!"
End Sub
Essa macro:
- encontra automaticamente a última linha;
- cria um cabeçalho;
- percorre os dados;
- verifica os valores;
- classifica cada registro;
- ajusta as colunas;
- apresenta uma mensagem no final.
Esse é o princípio básico de muitas automações profissionais feitas no Excel.
Estrutura básica de uma macro VBA
A estrutura mais comum é:
Sub NomeDaMacro()
'Código da macro
End Sub
A partir dessa estrutura, você pode adicionar:
- variáveis;
- condições;
- loops;
- fórmulas;
- funções;
- manipulação de células;
- manipulação de planilhas;
- arquivos;
- mensagens;
- tratamento de erros.
Principais comandos para começar
Alguns comandos aparecem constantemente em projetos VBA:
Range("A1")
Seleciona uma célula ou intervalo.
Cells(1, 1)
Representa uma célula por linha e coluna.
Worksheets("Planilha1")
Representa uma planilha específica.
ThisWorkbook
Representa o arquivo que contém o código.
If ... Then
Cria uma condição.
For ... Next
Cria uma repetição.
MsgBox
Exibe uma mensagem.
Dim
Declara uma variável.
With ... End With
Facilita operações repetidas sobre o mesmo objeto.
Conclusão
Programar macros no Excel com VBA começa com conceitos relativamente simples. Primeiro, você aprende a abrir o Editor do Visual Basic, criar um módulo e escrever uma estrutura Sub. Depois, pode avançar para variáveis, condições, loops, fórmulas e manipulação de planilhas.
Uma das melhores maneiras de aprender é começar com pequenas automações e aumentar gradualmente a complexidade.
O Gravador de Macros também pode ser um excelente ponto de partida, pois transforma ações realizadas na planilha em código VBA que pode ser estudado e posteriormente modificado.
Com o tempo, tarefas que antes levavam vários minutos ou até horas podem ser transformadas em um único botão.
O segredo é pensar na tarefa como uma sequência de passos e depois transformar cada passo em uma instrução que o VBA consiga executar.
Por: Alexandre lavrador. Opinião do Blogueiro.
Por favor, não esqueça de colocar este link como Referência Bibliográfica em sua Publicação:
Assistir Online Grátis Como Programar Macro no Excel com VBA, Ver Online de Graça Como Programar Macro no Excel com VBA, Filme Online Grátis Como Programar Macro no Excel com VBA, Assistir Online de Graça Como Programar Macro no Excel com VBA, Filme Completo de Graça Como Programar Macro no Excel com VBA, Assista o que é Como Programar Macro no Excel com VBA? Entenda a notícia sobre o que aconteceu sobre Como Programar Macro no Excel com VBA.
Caso o título Como Programar Macro no Excel com VBA esteja protegido por direitos autorais, você assistirá, neste artigo, a um filme gratuito disponível no YouTube que seja o mais parecido, sem ferir os direitos autorais de Como Programar Macro no Excel com VBA. Aqui no Flogão, funciona de forma semelhante à banca de sucos do Chaves: “-O que parece de limão é de groselha e tem gosto de tamarindo. -Isso isso isso isso...”