Como Sair do Zero no VBA em apenas uma Publicação
Vou te mostrar em apenas uma publicação quais são os passos iniciais no Visual Basic para você aprender como sair do zero no VBA!
Para sair do zero no VBA, habilite a guia Desenvolvedor em Arquivo > Opções > Personalizar Faixa de Opções, abra o editor com Alt+F11, crie um módulo em Inserir > Módulo e escreva sua primeira macro entre Sub e End Sub. Depois é só ligar a macro a um botão na planilha.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
O que você aprende neste vídeo
Resposta rápida: A aula ensina a construir do zero uma macro que junta dados de várias abas numa aba resumo: habilitar a guia Desenvolvedor, abrir o editor com Alt+F11, criar um módulo e escrever a macro, descobrir a última linha preenchida de cada aba com Range("A1048576").End(xlUp), e usar For Each para percorrer todas as abas, pulando a aba resumo com uma condição If.
Neste vídeo (79 min):
- 0:00 - A aula tem como objetivo juntar em uma única aba resumo os dados que estão espalhados em várias abas de vendedores por cidade
- 4:00 - Como habilitar a guia Desenvolvedor: em Arquivo, Opções, Personalizar Faixa de Opções, marcar a guia Desenvolvedor
- 5:00 - Abrindo o ambiente do VBA pelo botão Visual Basic da guia Desenvolvedor ou pelo atalho
Alt+F11 - 7:00 - Criando um módulo em branco e escrevendo a estrutura
Sub nomeDaMacro()eEnd Sub, onde tudo que fica entre as duas linhas é executado quando a macro roda - 15:00 - Como se referir a uma aba e a um intervalo dentro do VBA:
Sheets("São Paulo").Range("A2:C10") - 25:00 - O problema de abas com números diferentes de linhas preenchidas: uma última linha fixa como 10 funciona para uma aba e erra nas outras
- 27:00 - Descobrindo a última linha preenchida por código com
Range("A1048576").End(xlUp).Row, o equivalente ao atalhoCtrl + Seta para cima - 30:00 - Guardando esse valor numa variável chamada última linha, para o intervalo copiado se ajustar sozinho ao tamanho de cada aba
- 39:00 - Introduzindo a estrutura de repetição
For Each: percorrer cada aba dentro de todas as abas da pasta de trabalho, sem precisar saber quantas existem - 58:00 - Usando
If aba.Name <> "Resumo" Thenpara pular a aba resumo e copiar as informações só das abas de vendedores - 71:00 - Atribuindo a macro a um botão desenhado na planilha, para rodar o código com um clique sem abrir o VBA
- 74:00 - Acelerando a macro com
Application.ScreenUpdating = Falsee cálculo manual durante a execução, voltando ao automático no final
Trechos do vídeo:
- Para descobrir a última linha preenchida de uma aba por código, a instrução é
Range("A1048576").End(xlUp).Row, o mesmo que o atalhoCtrl + Seta para cimaa partir da última célula da planilha - A estrutura
For Each aba In ThisWorkbook.Sheetspercorre cada aba da pasta de trabalho sem precisar informar quantas abas existem, funcionando mesmo se uma aba for adicionada ou removida depois - Guardar a última linha preenchida numa variável, em vez de escrever um número fixo como 10, faz o intervalo copiado se ajustar sozinho quando a quantidade de dados muda
Application.ScreenUpdating = Falseno início da macro e cálculo manual durante a execução deixam o código mais rápido, porque o Excel deixa de atualizar a tela a cada linha
Para receber a planilha que usamos na aula no seu e-mail, preencha:
O que é o VBA e como vamos utilizá-lo?
O VBA (Visual Basic for Applications) é o ambiente do Excel em que podem ser criados, programados e utilizados códigos que façam operações no Excel de forma inteligente, automatizada, ou de formas mais complexas o que é feito normalmente com fórmulas do Excel (e também consegue fazer coisas que não podem ser feitas pelas fórmulas do Excel). Como queremos criar uma macro no VBA para fazer esses procedimentos, precisamos saber como abrir o ambiente do VBA no Excel.
Hoje vamos aprender a fazer uma programação em VBA para fazer uma compilação de informações de várias abas para uma só. Vamos entender o que são macros no Excel, os passos necessários para fazer nossos códigos VBA.
Como sair do Zero no VBA?
Em primeiro lugar, precisamos abrir o ambiente do VBA. Para fazer isso, precisaremos acessar a guia Desenvolvedor no Excel. Caso ela ainda não esteja habilitada no seu Excel, faça o seguinte: vá em Arquivo -> Opções -> Personalizar Faixa de Opções -> Marcar caixinha Desenvolvedor (lado direito) -> Clicar em OK. Com ela habilitada, iremos na guia desenvolvedor e clicaremos em Visual Basic (também temos o atalho Alt(+Fn)+F11).
Como queremos criar uma macro, ou seja, um código para realizar ações no Excel no ambiente do VBA, precisaremos criar um módulo. O módulo é a unidade que armazena as macros. Para começar tudo, iremos abrir o VBA (Alt+(Fn)+F11). Em seguida iremos na guia Inserir, e clicar em Módulo, para começar um módulo novo (Módulo 1, por padrão), em branco, onde iremos escrever nosso código.
O código abaixo representa o final do nosso código pronto, apresentado no vídeo:
Sub MinhaMacro()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each aba In ThisWorkbook.Sheets
If aba.Name <> "Resumo" Then
ult_linha = aba.Range("A1000000").End(xlUp).Row
aba.Range("A2:C" & ult_linha).Copy
pri_linha_resumo = Sheets("Resumo").Range("A1000000").End(xlUp).Row + 1
Sheets("Resumo").Range("A" & pri_linha_resumo).PasteSpecial
End If
Next
MsgBox ("Código Finalizado")
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Explicação do código – Como Sair do Zero no VBA:
A partir desse módulo em branco, iremos começar uma nova Sub (subrotina), que será o nome do nosso código. Ao inserir “Sub (nome do nosso código)” e dar Enter, automaticamente é preenchido um End Sub no final do código. O código vai ser sempre o que estiver escrito entre Sub e End Sub. Demos o nome para nossa macro de MinhaMacro.
As duas primeiras linhas dizem respeito à rapidez da execução do código. São duas instruções referentes à aplicação (Excel). A primeira quer dizer para a tela não ser atualizada, ao trocar de abas ou realizar mudanças de tela (subir, descer no Excel, por exemplo). A segunda quer dizer que as fórmulas serão forçadas a ficarem com cálculo manual (e não automático, como padrão), assim a cada passo da macro elas não se recalculariam.
Após, iniciaremos a estrutura de repetição For. Na estrutura for, passaremos a instrução para o nosso código para que ele abra aba a aba da nossa planilha (aba in Thisworkbook.Sheets – aba como unidade do conjunto de abas Thisworkbook.Sheets).
Antes de entrar em cada aba, iremos usar a estrutura If para verificar se aquela aba tem o nome diferente da aba Resumo, porque não queremos entrar nem mexer na aba de Resumo. Queremos entrar nas outras e trazer as informações para a aba Resumo. Então, a informação de “aba” tem que ser diferente de “Resumo”.
O objetivo é entrar em cada aba, pegar as informações das tabelas e trazer para a aba (tabela) Resumo, então é isso que nossa estrutura de repetição For vai fazer. Ao entrar numa aba específica, iremos buscar a última linha preenchida da coluna A daquela aba específica, e armazenaremos essa informação na variável “ult_linha”. Lembre-se que aqui queremos pegar tudo que está preenchido para passar para a aba Resumo.
Em seguida, a estrutura For irá copiar as informações presentes no intervalo entre a célula A2 e a última célula da coluna C, representada pela variável “ult_linha”.
Após isso, iremos buscar a primeira linha vazia na aba Resumo, a partir da célula A1000000 e dando um Ctrl pra cima, e pegando a linha imediatamente abaixo dessa, ou seja, a primeira linha vazia da aba Resumo e armazenaremos na variável “pri_linha_resumo”. Assim, colaremos as informações copiadas nesse local, abaixo das últimas informações preenchidas, independentemente de qual aba estivermos.
A partir daqui, iremos colar as informações na célula referente à primeira linha vazia da coluna A, representada por A & pri_linha_resumo. A
A partir desse ponto, a estrutura For irá repetir os passos acima, desde entrar em cada aba, até colar as informações achadas em cada aba na aba resumo para todas as abas encontradas com nome diferente de “Resumo”.
Com todos os passos feitos da estrutura For, iremos seguir com a nossa macro. Em seguida, ela mostrará uma mensagem em uma caixa escrito “Código Finalizado” para o usuário da planilha entender que o código já fez todos os procedimentos necessários.
Após esses passos, serão desativados os comandos dados para a aplicação no começo da nossa macro. Ou seja, serão ativados o cálculo automático das fórmulas, e a atualização de tela do Excel. Em seguida temos a instrução “End Sub”, que representa simplesmente o fim da nossa sub, explicada no começo.
Após fechar o nosso código, devemos criar um botão para que a nossa macro seja ativada, ao clicar nesse botão. Ele será o ativador e disparador da nossa macro. Para isso, no Excel iremos na guia Inserir > Ilustrações > Formas > Retângulo: Cantos Arredondados (2º ícone da categoria de Retângulos). A partir dessa escolha, redimensione a ilustração de acordo com o seu gosto, e pronto.
Após isso, vamos personalizar o botão. Para isso, iremos dar um clique com o botão esquerdo do mouse nele, e escreveremos o que desejamos que esteja escrito nele. No nosso exemplo, escrevemos “RODAR COMPILAÇÃO”, fomos na guia Página Inicial, e botamos o alinhamento no meio e centralizamos o texto, além de colocar em negrito. Para finalizar, iremos colocar um sombreamento, indo em Formato de Forma > Efeitos de Forma > Predefinição > Predefinições > Predefinição 2. E colocamos a cor em azul (cor de preferência).
Após criar e personalizar o botão da forma que queremos, devemos dizer que macro estará atribuída a ele. No caso, queremos atrelar o botão à nossa macro “MinhaMacro”. Para isso, devemos clicar com o botão direito do mouse no nosso botão criado -> Atribuir macro… -> clicar em MinhaMacro -> OK. E pronto, agora o nosso botão está ativado e pode ser usado para disparar a macro a partir de qualquer clique nele com o botão esquerdo.
Ao final da nossa compilação, teremos as três colunas preenchidas na aba Resumo com as informações de todas as outras abas respectivas, e nosso código fez isso de forma muito rápida e eficiente.
Somente nessa aula aprendemos uma grande diversidade de conceitos e aplicações de códigos do VBA juntos que fizeram diversas coisas, com objetivo de compilar informações de várias abas numa só.
Assim, com apenas uma aula você acaba percebendo que pode fazer diversas coisas com essa ferramenta incrível e claro como sair do zero no VBA. Não deixa de aprender mais coisas para complementar seu aprendizado. Siga nosso canal do Youtube para mais conteúdo!
Perguntas frequentes
1. Como abrir o editor do VBA no Excel?
Use o atalho Alt+F11 (em alguns teclados, Alt+Fn+F11) ou vá na guia Desenvolvedor e clique em Visual Basic. Se a guia ainda não aparecer, habilite em Arquivo > Opções > Personalizar Faixa de Opções, marque a caixinha Desenvolvedor no lado direito e clique em OK.
2. O que é um módulo no VBA e por que preciso dele?
O módulo é a unidade que armazena as macros dentro do editor: sem ele não há onde escrever o código. Com o VBA aberto, vá em Inserir > Módulo e surge o Módulo 1, em branco. Ao digitar Sub com o nome da macro e dar Enter, o End Sub aparece sozinho.
3. Para que servem ScreenUpdating e Calculation no começo da macro?
As duas linhas deixam o código mais rápido. Application.ScreenUpdating = False impede que a tela seja redesenhada a cada troca de aba, e Application.Calculation = xlCalculationManual evita que as fórmulas recalculem a cada passo. No fim da macro os dois voltam ao normal.
4. Como criar um botão para rodar a macro na planilha?
No Excel, vá em Inserir > Ilustrações > Formas e escolha o retângulo de cantos arredondados. Redimensione, escreva o texto do botão e formate como preferir. Depois clique nele com o botão direito, escolha Atribuir macro, selecione a sua macro e confirme em OK.
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!

