Programa
O Visual Basic for Applications (VBA) no Excel é uma linguagem que permite aos usuários automatizar tarefas repetitivas e aprimorar a funcionalidade do Excel muito além de seus recursos padrão. Portanto, quer você seja um iniciante que deseja aumentar a produtividade ou um usuário avançado que deseja simplificar fluxos de trabalho complexos, o VBA está aqui para facilitar as coisas.
Neste guia, explicarei os conceitos básicos e avançados do VBA. No entanto, se você for novo no Excel, comece com o Excel Fundamentals para criar uma base sólida antes de avançar para o VBA.
O que é VBA no Excel?
O Visual Basic for Applications (VBA) é uma linguagem de programação usada para automatizar tarefas e aprimorar a funcionalidade dos aplicativos do Microsoft Office. Você pode usá-lo com o Excel, Word, Access e outros programas do Office, embora provavelmente seja mais usado para criar macros personalizadas no Excel, o que veremos mais adiante.
Pessoalmente, a primeira vez que usei o VBA foi para automatizar um relatório semanal que costumava levar horas para ser compilado manualmente. Com apenas algumas linhas de código, reduzi o processo a um único clique de botão e economizei muitas horas. A partir de então, sei que investir algum tempo para dominá-lo compensaria enormemente em termos de produtividade.
Avance em sua carreira com o Excel
Adquira as habilidades para maximizar o Excel - não é necessário ter experiência.
Termos importantes do VBA Excel
Antes de trabalhar com o VBA, você deve entender seus principais termos e conceitos. Portanto, aqui está uma lista de alguns dos termos mais usados que você encontrará quando começar a automatizar tarefas e criar soluções personalizadas no Excel.
-
Módulos são os contêineres do código VBA, onde os procedimentos e as funções são armazenados.
-
Objetos são os blocos de construção do VBA. Eles representam elementos como pastas de trabalho, planilhas e células.
-
Procedimentos São os blocos de código que executam tarefas específicas, geralmente categorizados como subprocedimentos ou funções.
-
Declarações São as instruções em um procedimento que informam ao Excel (ou Word ou Access) quais ações você deve executar.
-
Variáveis armazenam dados que podem ser usados e manipulados em seu código.
-
Operadores lógicos comparam valores e tomam decisões com base nos resultados. Eles incluem operadores como
And,OreNot.
Primeiros passos com o VBA no Excel
Para começar a usar o VBA, você precisará acessar o editor do VBA. É aqui que você escreverá e editará seu código VBA. Vamos explicar como você pode chegar lá:
Ativação da guia Desenvolvedor
A primeira etapa é ativar a guia Desenvolvedor, que geralmente fica oculta na faixa de opções. Para isso:
- Clique com o botão direito do mouse em qualquer lugar da faixa de opções.

Faixa de opções no Excel. Imagem do autor.
- Selecione a opção Personalizar a faixa de opções... opção.

Personalize a faixa de opções para ativar a guia Desenvolvedor. Imagem do autor.
- Será exibida uma caixa de diálogo. Marque aopção Developer e clique em OK.

Selecionando a opção Desenvolvedor. Imagem do autor.
Agora você pode ver um Desenvolvedor na parte superior da faixa de opções.

A guia Desenvolvedor está ativada na faixa de opções. Imagem do autor.
Abrir o editor VBA
Quando a guiaDeveloper estiver ativada, você poderá acessar o editor VBA. Para isso, clique na guia Developer e selecione Visual Basic nas opções. Você também pode usar o atalho de teclado ALT + F11 para abrir o editor VBA diretamente.

VBA editor. Imagem do autor.
Navegando na interface do VBA
O editor VBA pode parecer intimidador no início, mas é fácil de usar. Vamos entender algumas de suas principais áreas:
- Painel de código É onde você escreve e edita seu código VBA.
- Explorador de projetos mostra uma visualização hierárquica dos projetos e módulos em sua pasta de trabalho.
- Janela Propriedades exibe as propriedades dos objetos selecionados para que você possa personalizar suas configurações.

Interface VBA no Excel. Imagem do autor.
Como escrever código VBA no Excel
Agora que você já está familiarizado com o editor VBA, é hora de começar a escrever algum código. O código VBA consiste em diferentes partes, como subprocedimentos e funções. Esses são conjuntos de instruções que informam ao Excel o que você deve fazer. Não se preocupe se você nunca programou antes - eu o ensinarei passo a passo.
Escrevendo uma sub-rotina VBA
Antes de escrever uma macro, você precisa criar um ambiente de macro. Para fazer isso, siga estas etapas:
- No editor VBA, selecione Inserir > Module. Um novo módulo será criado com o nome padrão, Module1.

Selecione Module (Módulo) na guia Insert (Inserir). Imagem do autor.
- Você pode alterar o nome do módulo na seção Propriedades você pode alterar o nome do módulo no painel Propriedades.

Renomeie o módulo VBA. Imagem do autor.
Agora que você sabe como configurar o ambiente para criar uma macro, vamos criar nossa primeira macro juntos para exibir uma mensagem. Por padrão, a janela de código é aberta quando o módulo é criado. Se isso não funcionar no seu caso, clique com o botão direito do mouse no módulo que você criou e clique em View Code. A janela de código será exibida, onde você poderá escrever suas macros.
Aqui, estou criando uma macro para exibir a mensagem Hello, World!. Para isso, escrevo o seguinte código no painel de código:
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
Aqui:
-
Sub é a palavra-chave para uma sub-rotina, que é um bloco de código que executa uma tarefa específica. No VBA, uma sub-rotina não retorna um valor.
-
ShowMessage é o nome da sub-rotina. Você pode dar o nome que quiser, desde que ele siga as convenções de nomenclatura do VBA (por exemplo, sem espaços, não pode começar com um número).
-
() são usados aqui para definir os parâmetros da sub-rotina. Como não são necessários parâmetros para essa tarefa, os parênteses estão vazios.
-
MsgBox é uma função integrada do VBA que exibe uma caixa de mensagem na tela.
-
End Sub indica o fim da sub-rotina. Tudo entre
SubeEnd Subé o código que será executado quando a sub-rotina for chamada. -
As cadeias de texto no VBA são colocadas entre aspas duplas. Aqui, queremos que a string
Hello, World!apareça dentro da caixa de mensagem.

Escrevendo uma macro. Imagem do autor.
- Agora, é hora de executar o código. Use a tecla de atalho F5. Se você quiser fazer isso manualmente, acesse aguia Developer e selecione Macros. Atingir Executar.

Selecione a opção Macros na guia Desenvolvedor. Imagem do autor.
Agora você pode ver a caixa de mensagem aparecer na planilha do Excel.

Caixa de mensagem. Imagem do autor.
Entendendo os objetos no VBA
No VBA, os objetos permitem que você controle diferentes elementos no Excel e automatize tarefas para obter fluxos de trabalho mais eficientes. Há três objetos principais: Workbook, Worksheet e Range. Vamos entender cada um deles com um exemplo prático.
O objetoWorkbook é qualquer arquivo do Excel que esteja aberto no momento. Ele nos permite executar ações como adicionar novas planilhas ou salvar as planilhas existentes na pasta de trabalho. Neste exemplo, quero adicionar uma planilha à planilha aberta no momento e, em seguida, salvá-la. No início, eu tinha Sheet1. Para adicionar outra planilha, escrevo o seguinte código:
Sub AddSheetAndSaveWorkbook()
' Adds a new worksheet to the active workbook
ActiveWorkbook.Sheets.Add
' Saves the workbook
ActiveWorkbook.Save
End Sub
Esse código funciona exatamente da mesma forma que o código anterior, mas adicionei comentários aqui. Os comentários começam com ' e não afetam seu código. Nós os adicionamos apenas para nossa conveniência e para tornar o código mais claro.
Você pode ver que outra planilha, Sheet2, foi criada agora.

Adicionar e salvar uma nova planilha na planilha existente usando o VBA. Imagem do autor.
O objeto Worksheet representa a planilha ativa no momento no Excel. Com isso, você pode modificar ou manipular a planilha ativa. Por exemplo, quero alterar o nome da planilha ativa. Para isso, insiro o seguinte código:
Sub RenameActiveSheet()
' Renames the active sheet to "Sales Report".
ActiveSheet.Name = "Sales Report"
End Sub

Alterar o nome da planilha usando o VBA. Imagem do autor.
Agora, Sheet1 foi renomeado para Sales Report.

Renomear a planilha do Excel usando VBA. Imagem do autor.
O objeto Range refere-se a um grupo específico de células ou a uma única célula que podemos manipular conforme necessário. No exemplo a seguir, seleciono um intervalo de células de F3 a I3 e altero a cor do plano de fundo. Para isso, escrevo o seguinte código:
Sub FormatRange()
' Selects the range from A1 to C6
Range("F3:I3"). Select
' Changes the background color of the selected range to Green
Selection.Interior.Color = RGB(101, 255, 143)
End Sub

Selecionando o intervalo e alterando a cor usando o VBA. Imagem do autor.
Você pode ver a diferença nos resultados.

Alterar a cor usando o VBA no Excel. Imagem do autor.
Criação de variáveis no VBA
Como em outras linguagens de programação, as variáveis do VBA armazenam dois tipos de dados principais: números e texto. Para usá-las no VBA, você deve primeiro declarar a variável usando a palavra-chave de acordo com suas preferências, seguida do nome da variável e do tipo de dados.
Keyword variableName As DataType
Aqui:
-
KeywordVocê pode serDim,Static,Public, ePrivate. -
variableNamerefere-se ao nome escolhido para essa variável (sem espaços). -
Asé usado para declarar o tipo de variável. -
DataTyperefere-se ao tipo de variável, comoInteger.
Ao trabalhar com variáveis, você também precisa obedecer a algumas regras:
- O comprimento deve ser inferior a 255 caracteres.
- Não são permitidos espaços entre os caracteres.
- O nome não pode começar com um número.
- Não use pontos finais no nome.
Tipo de dados numéricos
Os tipos de dados numéricos no VBA são usados para armazenar valores numéricos.
| Tipo de dados | Armazenado | Faixa de valores |
|---|---|---|
| Byte | 1 byte | Armazena números inteiros de 0 a 255 |
| Inteiro | 2 bytes | Armazena números inteiros no intervalo de -32.768 a 32.767 |
| Long | 4 bytes | Armazena números inteiros maiores, variando de -2.147.483.648 a 2.147.483.647 |
| Individual | 4 bytes | Armazena números decimais com precisão única |
| Duplo | 8 bytes | Armazena números decimais com precisão dupla |
| Moeda | 8 bytes | Armazena números com casas decimais fixas |
| Variante (texto) | Comprimento do texto + 22 bytes | 0 a 2 bilhões de caracteres |
Tipo de dados não numéricos
Os tipos de dados não numéricos no VBA armazenam valores que não são números.
| Tipo de dados | Armazenado | Faixa de valores |
|---|---|---|
| Cadeia de caracteres | Comprimento da cadeia de caracteres | Armazena texto |
| Data | 8 bytes | Armazena data e hora |
| Booleano | 2 bytes | Lojas Verdadeiro ou Falso |
| Variante | 16 bytes | Armazena qualquer tipo de dados e é usado quando o tipo não é conhecido antecipadamente |
Automatização de tarefas com macros VBA do Excel
As macros são essencialmente uma série de instruções criadas no VBA para executar tarefas repetitivas. Usando uma macro, você pode registrar uma série de ações, como formatar células, copiar dados ou realizar cálculos. Depois de salvar a macro, podemos reaplicar essas ações com um único clique. Isso economiza tempo, especialmente quando você trabalha com grandes conjuntos de dados ou tarefas.
Por exemplo, se você costuma formatar seus relatórios da mesma maneira, pode gravar uma macro que aplique todas as etapas de formatação necessárias, em vez de fazer isso manualmente todas as vezes. Posteriormente, você pode executar essa macro para formatar novos dados. Mostramos alguns exemplos básicos, mas imagine que você possa realizar mais ações pequenas com apenas um clique. Mesmo que não tenha experiência em codificação, você pode automatizar as tarefas de rotina para otimizar o fluxo de trabalho e reduzir as chances de erros que podem ocorrer ao executar ações repetitivas manualmente.
Gravação de uma macro do Excel
Vamos ver como você pode gravar uma macro para fazer algumas alterações de formatação:
- Vá para a seção Desenvolvedor > você pode gravar Gravar macro e você pode clicar no botão Gravar macro.
- Será exibida uma caixa de diálogo. Dê um nome à sua macro, como fizem FormatCells.
- Atribua um atalho de teclado, se desejar. Eu o atribuí a Ctrl+S.
- Clique em OK para iniciar a gravação.
Agora que a macro começa a gravar, execute as ações que você deseja automatizar. Para este exemplo, estou registrando algumas alterações de formatação em uma tabela simples. Depois de concluí-la, volte para a guia Developer e clique no botãoStop Recording. Abaixo, você pode ver a macro em ação.
Gravação de uma macro usando VBA no Excel. Gif do autor.
Agora, se você tiver outro conjunto de dados em outra planilha e quiser a mesma formatação nesse conjunto de dados também, em vez de formatar tudo novamente, pressione a tecla de atalho que você criou (no meu caso, é Ctrl+S). Caso contrário, acesse sheet2 > guia Desenvolvedor > Macros > Executar para fazer isso manualmente.

Usando a macro do Excel. Gif do autor.
Edição de macros do Excel
Depois de gravar uma macro, você pode até mesmo ajustar ou personalizar suas ações. Veja como:
- Vá para a seção Desenvolvedor e clique em Visual Basics.
- O editor VBA será exibido. Agora, noProject Explorer do site , procure a pasta de trabalho em que a macro está armazenada .
- Expanda a pastaModules e, em seguida, clique duas vezes no módulo que contém a macro. A janela de código exibirá o código VBA da macro que você gravou.

Código da macro registrada no Excel. Imagem do autor.
Cada linha de código mostra a ação que você executou durante a gravação. A partir daí, você pode modificar o código gravado para personalizar a macro de acordo com sua escolha. No meu caso, defini o endereço Selection.Font.Bold como False para remover a formatação em negrito. Quando as edições estiverem concluídas, salve as alterações clicando no botão Salvar ou pressione Ctrl+Se execute o código para aplicar as alterações. 
Personalização da macro VBA do Excel. Imagem do autor.
Depois de executar a macro, você pode ver os resultados: as colunas anteriormente em negrito não estão mais em negrito.

Usando uma macro no Excel. Imagem do autor
Escrever macros personalizadas do Excel
Pode haver algumas tarefas avançadas em que você não pode gravar uma macro. Nesses casos, você precisa escrever uma macro do zero. Por exemplo, quero copiar os dados de uma planilha para outra. Veja como eu escrevo uma macro personalizada:
- Abra o editor VBA manualmente na primeira planilha ou pressione Alt+F11.
- Insira um novo módulo.
- Escreva o código a seguir no painel de código.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
- Salvar a macro e pressione Executar.
Agora, você pode ver que os dados da Sheet1 foram foram copiados para a Planilha2.

Escrever uma macro personalizada usando o VBA. Gif do autor.
Considerações finais
Desde a automatização de tarefas repetitivas até a criação de macros complexas, o VBA abre um mundo de possibilidades no Excel. À medida que você se sentir mais confortável com os conceitos básicos, pratique a escrita de código e explore gradualmente os recursos mais avançados do VBA. Lembre-se de que o segredo para dominar o VBA - ou qualquer linguagem de programação - é a prática consistente e a disposição para experimentar. Para aprimorar ainda mais suas habilidades, considere explorar esses recursos adicionais. Os cursos Análise de dados no Excel e Aprenda Excel são excelentes para você aprender mais sobre os recursos do Excel.
Se você quiser expandir seus conhecimentos de codificação para além do VBA, o guia How to Become a Programmer in 2024 oferece um roteiro. Se você tiver interesse na área, dê uma olhada. Além disso, o curso Modelagem Financeira em Excel é perfeito para os interessados em criar modelos financeiros detalhados.
Aprenda os fundamentos do Excel
Sou um estrategista de conteúdo que adora simplificar tópicos complexos. Ajudei empresas como Splunk, Hackernoon e Tiiny Host a criar conteúdo envolvente e informativo para seus públicos.
Perguntas frequentes sobre VBA no Excel
Qual é a finalidade da instrução Explicit no VBA?
Explícito ajuda a garantir que todas as variáveis sejam declaradas explicitamente antes do uso, reduzindo bugs e tornando seu código mais fácil de manter.
Como faço para proteger meu código VBA com senha?
Você pode proteger seu código VBA acess andoo editor VBA > Ferramentas > VBAProject Properties > guia Proteção. Verifique a opção Bloquear projeto para visualização e defina uma senha.
Qual é a diferença entre ActiveWorkbook e ThisWorkbook no VBA?
ActiveWorkbook refere-se à pasta de trabalho atualmente em foco, que pode não conter o código VBA. Thisworkbook refere-se à pasta de trabalho em que o código VBA reside, independentemente de qual pasta de trabalho esteja ativa.
O que são UserForms no VBA e como eles podem ser usados?
UserForms são caixas de diálogo personalizadas no VBA que permitem que os usuários insiram dados. Eles podem ser usados para criar formulários interativos para entrada de dados, seleção ou interação com o usuário que exija uma interface personalizada.


