Excel VBA – Guia prático passo a passo
Excel VBA – Guia prático passo a passo, VBA (Visual Basic for Applications) é uma linguagem de programação integrada ao Excel que serve para automatizar tarefas, criar funções personalizadas e controlar recursos do Excel de forma avançada.

Aqui estão os principais usos do VBA no Excel:
1 – Automação de Tarefas.
- Executar ações repetitivas automaticamente (ex.: copiar dados, formatar células, gerar relatórios).
- Exemplo: Atualizar todas as planilhas com um clique.
2 – Criação de Macros Avançadas.
- Macros são sequências de comandos que você grava ou escreve para executar processos.
- Com VBA, você pode criar macros muito mais poderosas do que as gravadas pelo Excel.
3 – Funções Personalizadas.
- Criar fórmulas que não existem no Excel (ex.: cálculos específicos para seu negócio).
4 – Interação com Outros Aplicativos.
- Controlar Word, Outlook, Access, etc., diretamente pelo Excel (ex.: enviar e-mails automáticos).
5 – Manipulação de Dados.
- Importar/exportar dados de arquivos CSV, TXT, bancos de dados.
- Criar dashboards dinâmicos com atualização automática.
Aqui estão alguns comandos básicos do Excel VBA que são muito úteis para começar:
Como usar esse código:
Vamos aprender abrir o Excel VBA, pressione ALT + F11 para abrir o Editor VBA.
1 – Criar uma macro que escreve um texto em uma célula:
Sub EscreverTexto()
‘Esta macro escreve “Olá, Mundo!” na célula A1
Range(“A1”).Value = “Olá, Mundo!”
End Sub
2 – Estruturas de Controle:
If…Then…Else:
If Range(“A1”).Value > 10 Then
MsgBox “Maior que 10”
Else
MsgBox “Menor ou igual a 10”
End If
Loop For:
For i = 1 To 10
Cells(i, 1).Value = i
Next i
Loop While:
i = 1
While i <= 10
Cells(i, 1).Value = i
i = i + 1
Wend
3 – Trabalhando com Planilhas.
- Ativar uma planilha: Sheets(“Planilha1”).Activate
- Criar uma nova planilha: Sheets.Add
4 – Mensagens e Interação.
- Caixa de mensagem: MsgBox “Processo concluído!”
- InputBox (entrada do usuário):
- nome = InputBox(“Digite seu nome:”)
- MsgBox “Olá, ” & nome
5 – Trabalhando com Variáveis.
- Declarar variáveis:
- Dim contador As Integer
- Dim texto As String
Excel VBA – Guia prático passo a passo, dica importante:
Para salvar nossa planilha escolher a opção Pasta de trabalho Habilitada para Macro do Excel onde vai ficar com a extensão XLSM.
As planilhas disponíveis para baixar estão compactadas, para descompactar botão direito em cima da pasta opção extrair tudo.
Vamos listar alguns exemplos práticos de como automatizar nossas planilhas com o Excel VBA:
1 – Largura automática das colunas no Excel.
Está opção automatiza a largura das colunas em nossas planilhas para isso vamos abrir o Excel VBA ALT + F11 e na opção Worksheet vamos colocar a função abaixo:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.EntireColumn.AutoFit
End Sub
Fechar o Excel VBA.

2 – Cep automático no Excel.
Veja que interessante está ferramenta no Excel, onde somente digitando o CEP
ela já carrega os dados como rua, bairro, cidade e estado.
Para isso precisamos criar duas macros no Excel VBA. Uma para comunicar com o site viacep e a outra para carregar as informações em nossa planilha:
Função utilizada para acessar o site viacep:
Function ConsultaCEP(valorcep As String, tipoCampo As String)
Dim oXmlDoc As DOMDocument
Dim oXmlNode As IXMLDOMNode
Dim oXmlNodes As IXMLDOMNodeList
Set oXmlDoc = New DOMDocument
oXmlDoc.async = False
oXmlDoc.Load (“https://viacep.com.br/ws/” + valorcep + “/xml/”)
Set oXmlNodes = oXmlDoc.SelectNodes(“/xmlcep/” + tipoCampo)
For Each oXmlNode In oXmlNodes
ConsultaCEP = oXmlNode.Text
Next
End Function
Função utilizada para copiar as informações em nossa planilha:
Sub Macro2()
Range(“C3”).Select
ActiveCell.Offset(1, 0).Value = UCase(ConsultaCEP(Range(“C3”).Value, “logradouro”))
ActiveCell.Offset(2, 0).Value = UCase(ConsultaCEP(Range(“C3”).Value, “bairro”))
ActiveCell.Offset(3, 0).Value = UCase(ConsultaCEP(Range(“C3”).Value, “localidade”))
ActiveCell.Offset(4, 0).Value = UCase(ConsultaCEP(Range(“C3”).Value, “uf”))
End Sub
Fechar o Excel VBA.

3 – Filtro automático no Excel.
Conheça está ferramenta no Excel onde podemos deixar nosso filtro automático com recursos do Excel VBA, simplesmente digitando e pressionando o enter já filtra os resultados.
Está planilha estamos usando o filtro automático para filtrar a coluna situação.
Vamos aos passos:
CRTL T para selecionar toda a planilha.
CRTL + ALT + T para transformar nossa planilha em tabela.
Agora ALT + F11 para acessar o Excel VBA.
Vamos clicar em planilha 1 e escolher a opção Worksheet_Change e copiar a função abaixo:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(“C2”)) Is Nothing Then
Dim DataRng As Range, LastRow As Long
LastRow = Range(“B9999”).End(xlUp).Row
Set DataRng = Range(“B5:F” & LastRow)
If Target.Value = “” Then
DataRng.AutoFilter Field:=1
Else
DataRng.AutoFilter Field:=1, Criteria1:=Target.Value
End If
End If
End Sub
Fechar o Excel VBA.

04 – Classificação automática no Excel.
Veja como é fácil fazer a classificação automática no Excel, conforme vou digitando os nomes já vai acertando a ordem automaticamente.
Vamos aos passos:
Primeiro vamos converter a nossa planilha em tabelas, CTRL + ALT + T e renomear a tabela para tab. Agora vamos abrir o Excel VBA, para isso pressione ALT + F11, e em planilha 1 dois cliques e vamos copiar a função abaixo e fechar o Excel VBA.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SalesTable As ListObject
Dim SortCol As Range
Set SalesTable = ActiveSheet.ListObjects(“tab”)
Set SortCol = Range(“tab[Vendedores]”)
If Not Intersect(Target, SortCol) Is Nothing Then
With SalesTable.Sort
.SortFields.Clear
.SortFields.Add Key:=SortCol, _
Order:=xlAscending
.Header = xlYes
.Apply
End With
End If
End Sub

5 – Gerar pdf automático no Excel.
O Excel permite criar uma rotina para gerar os arquivos em pdf.
Para isso vamos seguir os passos:
Abrir o Excel VBA ALT + VBA e em inserir modulo vamos copiar a função abaixo.
Sub GerarPDF()
Dim SvInput As String
Dim DATA As String
Dim nome As String
pdf = Worksheets(“Planilha2”).UsedRange.Rows.Count
DATA = VBA.Format(VBA.Date, “dd-mm-yyyy”)
SvInput = ThisWorkbook.Path & Application.PathSeparator & nome & “ORCAMENTO_” & DATA & “.pdf”
With ActiveSheet
.ExportAsFixedFormat Type:=x1TypePDF, Filename:=SvInput, OpenAfterPublish:=True
End With
End Sub
Agora Vamos fechar o Excel VBA e criar um botão para apontar a nossa sub, botão direito em cima do botão criado, atribuir macro e apontar a sub.

6 – Código de barras no Excel.
Vamos instalar a fonte code 128 para isso botão direito instalar. Com o Excel aberto pressione ALT + F11 e na opção inserir modulo vamos copiar a função abaixo para criar a função code128, fechar o Excel VBA:
Public Function code128$(chaine$)
Dim i%, checksum&, mini%, dummy%, tableB As Boolean
code128$ = “”
If Len(chaine$) > 0 Then
For i% = 1 To Len(chaine$)
Select Case Asc(Mid$(chaine$, i%, 1))
Case 32 To 126, 203
Case Else
i% = 0
Exit For
End Select
Next
code128$ = “”
tableB = True
If i% > 0 Then
i% = 1Do While i% <= Len(chaine$)
If tableB Then
mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
GoSub testnum
If mini% < 0 Then
If i% = 1 Then
code128$ = Chr$(205)
Else
code128$ = code128$ & Chr$(199)
End If
tableB = False
Else
If i% = 1 Then code128$ = Chr$(204)
End If
End If
If Not tableB Then
mini% = 2 GoSub testnum
If mini% < 0 Then
dummy% = Val(Mid$(chaine$, i%, 2))
dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
code128$ = code128$ & Chr$(dummy%)
i% = i% + 2
Else
code128$ = code128$ & Chr$(200)
tableB = True
End If
End If
If tableB Then
code128$ = code128$ & Mid$(chaine$, i%, 1)
i% = i% + 1
End If Loop
For i% = 1 To Len(code128$)
dummy% = Asc(Mid$(code128$, i%, 1))
dummy% = IIf(dummy% < 127, dummy% – 32, dummy% – 100)
If i% = 1 Then checksum& = dummy%
checksum& = (checksum& + (i% – 1) * dummy%) Mod 103
Next
checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 100)
code128$ = code128$ & Chr$(checksum&) & Chr$(206)
End If
End If
Exit Function testnum:
mini% = mini% – 1
If i% + mini% <= Len(chaine$) Then Do While mini% >= 0
If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
mini% = mini% – 1
Loop
End If
Return
End Function
Na célula do código de barras vamos inserir a função =@code128 abre o parênteses e clicar no código a gerar fechar o parênteses e enter, mudar a fonte do código de barras para code128 e aumentar o tamanho da fonte.

7 – Cadastro cliente com Cep automático.
Planilha de cadastro de cliente com cep automático onde preencher automático a rua, bairro, cidade e estado com recursos do Excel VBA.
Para isso vamos abrir o Excel VBA ALT + F11 e criar um modulo chamado CEP, nele vamos criar a conexão com o site viacep.
Criar um modulo CEP e inserir a função abaixo:
Function ConsultaCEP(valorcep As String, tipoCampo As String)
Dim oXmlDoc As DOMDocument
Dim oXmlNode As IXMLDOMNode
Dim oXmlNodes As IXMLDOMNodeList
Set oXmlDoc = New DOMDocument
oXmlDoc.async = False
oXmlDoc.Load (“https://viacep.com.br/ws/” + valorcep + “/xml/”)
Set oXmlNodes = oXmlDoc.SelectNodes(“/xmlcep/” + tipoCampo)
For Each oXmlNode In oXmlNodes
ConsultaCEP = oXmlNode.Text
Next
End Function
Botão CEP inserir a função abaixo:
Private Sub ECorreios_Click()
txt_endereço = UCase(ConsultaCEP(txt_cep, “logradouro”))
txt_bairro = UCase(ConsultaCEP(txt_cep, “bairro”))
cmb_cidade = UCase(ConsultaCEP(txt_cep, “localidade”))
cmb_uf = UCase(ConsultaCEP(txt_cep, “uf”))
End Sub
Agora vamos ativar o serviço em ferramentas referência Microsoft XML, v3.0

Para salvar nossa planilha escolher a opção Pasta de trabalho Habilitada para Macro do Excel onde vai ficar com a extensão XLSM.

0 Comentários