Introdução a macros e VBA

Como começar com Excel VBA
Lista de códigos usados com frequência

Resumimos os preparativos para começar a escrever VBA e os códigos básicos que são frequentemente usados. Apresentaremos exemplos que você pode copiar e experimentar, incluindo especificação de célula/intervalo, variáveis, ramificação condicional, repetição e como escrever funções.

Se você quiser saber o que são macros e VBA, consulte Artigo de introdução de Macros/VBA primeiro.

Preparando o ambiente de Programador (Windows)

Você não precisa de nenhum outro software para escrever VBA. Escreva em VBE(Visual Basic Editor) no Excel e execute como está. Primeiro, prepare o seguinte apenas uma vez.

1. Mostre a guia do desenvolvedor

Abra “Ficheiro” → “Opções” → “Personalizar Faixa de Opções”, marque “Desenvolvedor” na lista de “Guias Principais” à direita e pressione “OK”. Uma guia “Desenvolvedor” aparecerá na faixa de Opções.

2. Abra o VBE

Clique em “Visual Basic” na guia “Desenvolvedor”.Alt+F11Mas posso abri-lo. Pressioná-lo novamente retornará à tela do Excel.

3. Adicione módulo padrão

Selecione "Inserir" → "Módulo Padrão" no menu VBE. O "Módulo1" será criado no projeto à esquerda e você poderá escrever o código à direita. Macros comuns são escritas neste módulo padrão.

4. Ative "Forçar declaração de variável"

Marque "Forçar declaração de variável" na guia "Ferramentas" → "Opções" → "Editar" do VBE. A linha a seguir é inserida automaticamente no início do módulo recém-criado e uma mensagem de erro será exibida para informá-lo se você digitou incorretamente o nome de uma variável.

parte superior do módulo
Option Explicit   ' Coloque no início do módulo para exigir a declaração de variáveis com Dim.

5. Escreva e execute

Após escrever o código, clique dentro de Sub ~ End Sub e pressione "▶" (Sub/Run User Form) na barra de ferramentas, ouF5Pressione Na tela do Excel, clique em "Macros" (Alt+F8) para selecionar um nome e executá-lo.

Se você quiser verificar valores intermediários, vá em "Visualizar" → "Janela Imediata" do VBE (Ctrl+G) e escreva "Nome da variável Debug.Print" no código, o valor aparecerá lá.

6. Salvar como pasta de trabalho habilitada para Macros (.xlsm)

Para a pasta de trabalho na qual você escreveu o VBA, selecione "Pasta de trabalho habilitada para Macros do Excel (*.xlsm)" em "Salvar como". Se você salvá-lo como um arquivo .xlsx normal, o código que você escreveu será perdido.

Ao abrir a pasta de trabalho, se receber uma mensagem dizendo "Aviso de segurança: as macros foram desativadas", clique em "Ativar conteúdo" somente se a pasta de trabalho for uma que você criou ou confia. As macros podem ser bloqueadas em arquivos salvos por e-mail ou pela Internet. Nesse caso, clique com o botão direito no Ficheiro → selecione “Propriedades” e marque “Permitir”.

As alterações feitas usando uma Macros não podem ser desfeitas usando Ctrl+Z.Ao testar, use uma cópia da apostila ou dos dados práticos.

Para Mac, exiba a guia do desenvolvedor selecionando o menu "Excel" → "Preferências" → "Faixa e barra de ferramentas" e abra o VBE no "Visual Basic" na guia do desenvolvedor.

MacrowPratique usando o navegadorPratique desde a exibição da guia de Programador até a Executar do código →

Uma lista de referência rápida de códigos usados com frequência

Se você conseguir ler tanto, poderá ler muitas das macros gravadas e códigos criados pela IA. Instruções detalhadas para cada um são apresentadas nas seções abaixo.

Como escreversignificado
Sub MacroName() 〜 End SubO início e o fim de uma Macros (procedimento)
' Comentário' Notas que não são executadas até o final da linha
Dim item As LongPrepare uma variável (Long é um número inteiro)
Set item = Worksheets("contagem")Coloque planilhas, células, etc. em variáveis
Range("A1")Célula A1
Range("A1:C5")Faixa de A1 a C5
Cells(row, column)Especifique células por número de linha/coluna
Cells(Rows.Count, 1).End(xlUp).RowA última linha com dados na coluna A
.Valuevalor da célula
If condition Then 〜 End IfExecutar somente quando as condições forem atendidas
For i = 1 To 10 〜 Next irepita um determinado número de vezes
For Each item In targetRange 〜 NextProcessar células no intervalo, uma por uma
Function MacroName() … End FunctionFunção caseira que retorna um valor
WorksheetFunction.Sum(targetRange)Usando funções de planilha com VBA
MsgBox "personagens"mostrar mensagem

Forma básica de Macros (Sub) e comentários

A Macros começa com "Sub Macros name()" e termina com "End Sub". Os comandos escritos durante esse período serão executados em ordem, de cima para baixo. O japonês também pode ser usado em nomes de macros.

Forma básica de Macros
Sub SayHello()
    ' Esta linha é comentada (não executada)
    MsgBox "Olá"
End Sub

「'"(aspas simples) no final da linha há um comentário. Escrever o que você está fazendo o ajudará a lê-lo mais tarde ou a passá-lo para outra pessoa.

Use "Chamar" para chamar outras macros.

chamar Macros
Sub RunAll()
    Call CheckSales     ' chame outra Macros
    Call SayHello
End Sub

Como escrever variáveis e constantes

Variáveis são caixas que armazenam valores que estão sendo calculados ou valores que são usados muitas vezes. Prepare-o com "Dim nome da variável como tipo" e insira o valor com "=".

Preparar e usar variáveis
Sub VariablesExample()
    Dim total As Long        ' inteiro
    Dim customer As String   ' corda
    Dim price As Double      ' números com decimais
    Dim today As Date        ' Data
    Dim finished As Boolean  ' Verdadeiro ou Falso

    total = 12
    customer = "Komorebi Shop"
    price = 1200.5
    today = Date
    finished = False

    Range("A1").Value = customer & ":" & total & "importa"
End Sub
moldeO que colocar
LongInteiro (número da linha, número de itens, etc.)
DoubleNúmeros incluindo decimais (valores, porcentagens, etc.)
Stringcorda
DateData/hora
BooleanTrue / False
VariantQualquer coisa pode caber (quando você não decide o tipo)
Worksheet / RangePlanilha/célula (inserir com conjunto)

Ao armazenar "coisas" (objetos), como planilhas ou células em variáveis, adicione "Definir" no início. Se você esquecer de anexá-lo, ocorrerá um erro, que é onde frequentemente tropeço.

Coloque células da planilha em variáveis
Dim ws As Worksheet
Set ws = Worksheets("contagem")    ' Insira planilhas e células com Set
ws.Range("A1").Value = "Vendas totais"

Dim target As Range
Set target = ws.Range("A2:C10")
target.ClearContents

Para valores que não mudam durante o processo, como a alíquota do imposto sobre o consumo, se você usar "Const" para torná-lo uma constante, basta alterar um local ao alterá-lo.

constante
Const TAX_RATE As Double = 0.1   ' Um valor que não muda durante o processo

Range("C2").Value = Range("B2").Value * (1 + TAX_RATE)

Como especificar células/intervalos

A coisa mais comum de escrever em VBA é especificar células. 「Range("A1")" é o endereço da célula e "Células (linha, coluna)" é especificado por número.As células, que podem ser especificadas por número, são úteis ao mudar as linhas uma por uma durante a repetição.

Especificando células/intervalos
Range("A1").Value = 100                     ' A1
Range("A1:C3").Value = 0                    ' Agrupados em A1-C3
Range("A:A").Font.Bold = True               ' Coluna A inteira
Range("2:2").Font.Bold = True               ' segunda linha inteira
Cells(2, 3).Value = "C2"                     ' 2ª linha/3ª coluna (C2)
Range(Cells(1, 1), Cells(5, 3)).Select      ' A1〜C5
Worksheets("contagem").Range("A1").Value = "Total" ' Especifique a planilha

Se você não escrever um nome de planilha, a planilha que está aberta no momento (planilha ativa) será o alvo. Ao operar outra planilha, clique emWorksheets("nome da planilha").”na frente.

encontre a última linha

Para tabelas onde o número de linhas muda a cada mês, verifique a quantidade de dados existentes antes do processamento. Esta é uma forma de escrever para encontrar o número da linha da primeira célula que contém dados, começando na célula inferior da coluna A e subindo.

última linha
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row   ' Pesquise da parte inferior da coluna A até o topo

Range("A2:A" & lastRow).Font.Bold = True     ' Da parte inferior do título até a última linha

Tabela inteira/turno/expandir

Região Atual・Deslocamento・Redimensionar
Range("A1").CurrentRegion.Select       ' Tabela inteira conectada a A1
Range("A1").Offset(1, 0).Value = "inferior"    ' 1 linha abaixo (A2)
Range("A1").Offset(0, 2).Value = "certo"    ' 2ª fila à direita (C1)
Range("A1").Resize(3, 2).Select         ' 3 linhas x 2 colunas de A1 (A1:B3)

Manipulação de valores, fórmulas e formatos

Os valores das células são lidos e gravados usando ".Value". Para a fórmula, insira a mesma string usada ao inseri-la no Excel em ".Formula".

Valor/Fórmula/Formato
Range("D2").Formula = "=B2*C2"                  ' insira a fórmula
Range("A2:D10").ClearContents                   ' Exclua apenas o valor (o formato permanece)
Range("A1").Font.Bold = True                    ' Negrito
Range("A1").Interior.Color = RGB(255, 242, 204) ' cor de preenchimento
Range("D2:D10").NumberFormat = "#,##0"          ' Separador de 3 dígitos
Range("A1:D10").Copy Destination:=Worksheets("reserva").Range("A1")  ' copie e cole

Ramificação condicional (If · Select Case)

Use "If ~ Then" para separar o processamento com base nas condições. Não se esqueça do “End If” no final.Use "ElseIf" para dividir a condição em várias condições e "Else" quando nenhuma das condições se aplicar.

If 〜 ElseIf 〜 Else
If Range("B2").Value >= 80 Then
    Range("C2").Value = "Aprovado"
ElseIf Range("B2").Value >= 60 Then
    Range("C2").Value = "Reconfirmação"
Else
    Range("C2").Value = "Falha"
End If
Julgamento em branco/condições múltiplas
If Range("A2").Value = "" Then
    MsgBox "A2 está em branco"
End If

' E (ambos), Ou (qualquer um), <> (diferente)
If Range("B2").Value >= 60 And Range("C2").Value <> "Ausência" Then
    Range("D2").Value = "OK"
End If

Ao dividir em várias formas com base em um valor, "Selecionar caso" é mais fácil de ler.

Select Case
Select Case Range("B2").Value
    Case "Tóquio", "Yokohama"
        Range("C2").Value = "Kanto"
    Case "Osaca", "Quioto"
        Range("C2").Value = "Kansai"
    Case Else
        Range("C2").Value = "Outro"
End Select

Repetir (For · For Each · Do While)

Executar o mesmo processamento para cada linha é onde o VBA mostra seu maior poder."For ~ Next" se repete enquanto a variável i é incrementada em 1.

For … Next (2–10)
Dim i As Long
For i = 2 To 10
    Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
Next i

Ao processar células em um intervalo ou planilhas em uma pasta de trabalho, uma por uma, use “For Each”.

For Each
Dim cell As Range
For Each cell In Range("A2:A10")
    If cell.Value = "" Then
        cell.Interior.Color = RGB(255, 199, 206)   ' preencha os espaços em branco com vermelho
    End If
Next cell

Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets   ' todas as folhas
    ws.Range("A1").Font.Bold = True
Next ws

Se a linha final não for determinada, use "Do While" para repetir, desde que as condições sejam atendidas.Se você esquecer "r = r + 1", não conseguirá parar.Quando não para,EscOuCtrl+BreakVocê pode interrompê-lo com .

Do While 〜 Loop
Dim r As Long
r = 2
Do While Cells(r, 1).Value <> ""   ' Até a coluna A ficar em branco
    Cells(r, 5).Value = "Confirmado"
    r = r + 1
Loop
Sair para
For i = 2 To 100
    If Cells(i, 1).Value = "Total" Then Exit For   ' sair no meio do caminho
Next i

Como escrever e usar funções

Quando falamos em “funções” em VBA, existem três tipos:

Crie sua própria função (Função)

Se você criá-lo usando "Função", ele se tornará uma função que retorna o valor calculado. Se você colocar um valor no nome da função, esse será o resultado.Se você escrever em um módulo padrão, poderá inserir "=Valor incluindo impostos (A2)" em uma célula e usá-lo da mesma forma que uma função de planilha.

Function
Function PriceWithTax(price As Double) As Double
    PriceWithTax = price * 1.1     ' O valor que você coloca no nome da função se torna o resultado.
End Function

Sub UseFunction()
    Range("B2").Value = PriceWithTax(Range("A2").Value)
End Sub

Usando funções de planilha com VBA

Funções usadas em células, como SUM e COUNTIF, podem ser chamadas com "WorksheetFunction".

WorksheetFunction
Range("C11").Value = WorksheetFunction.Sum(Range("C2:C10"))
Range("C12").Value = WorksheetFunction.Average(Range("C2:C10"))
Range("C13").Value = WorksheetFunction.CountIf(Range("B2:B10"), "Tóquio")

Funções VBA

O VBA também fornece funções que lidam com datas e strings.

Formato・Len・Esquerda・Substituir etc.
Range("A1").Value = Format(Date, "yyyy-mm-dd")   ' data de hoje em texto
Range("A2").Value = Now                           ' data e hora atuais
Range("A3").Value = Len("Komorebi Shop")             ' Número de caracteres → 13
Range("A4").Value = Left("2026-10-06", 4)         ' 4 caracteres da esquerda → 2026
Range("A5").Value = Replace("Tóquio Filial", "Filial", "") ' Substituir → Tóquio
Range("A6").Value = Trim("  Tóquio  ")               ' Apague os espaços antes e depois

Mensagem e entrada (MsgBox · InputBox)

Usado para notificar o fim do processamento ou para confirmar antes da Executar. Se você usar "InputBox", poderá inserir o mês, responsável, etc. cada vez que executar o programa.

MsgBox · InputBox
MsgBox "Acabou"

If MsgBox("Você quer executá-lo?", vbYesNo) = vbNo Then Exit Sub

Dim answer As String
answer = InputBox("Quantos meses?")
Range("A1").Value = answer & "Mensalmente"

Operações de folhas/livros

livro de folhas
Worksheets("Vendas").Activate                    ' trocar folhas
Worksheets("Vendas").Copy After:=Worksheets(Worksheets.Count)  ' folha de cópia
ActiveSheet.Name = "Out"                        ' Alterar nome da planilha
Worksheets.Add After:=Worksheets(Worksheets.Count)          ' adicionar planilha

Dim book As Workbook
Set book = Workbooks.Open(ThisWorkbook.Path & "\Tóquio_October.xlsx")
book.Close SaveChanges:=False                    ' Fechar sem salvar
ThisWorkbook.Save                                ' Salve esta pasta de trabalho

Se houver muito processamento a ser feito, você pode parar de atualizar a tela e ela terminará mais rápido. Você pode escrever o processo quando ocorrer um erro usando "On Error GoTo".

Interromper atualizações de tela
Sub RunFaster()
    Application.ScreenUpdating = False   ' Interromper atualizações de tela
    ' ...Processo que leva tempo...
    Application.ScreenUpdating = True    ' voltar para o último
End Sub
Esteja preparado para erros
Sub HandleErrors()
    On Error GoTo ErrHandler
    Worksheets("contagem").Range("A1").Value = "OK"
    Exit Sub
ErrHandler:
    MsgBox "Recebi um erro:" & Err.Description
End Sub

Exemplo combinado: cálculo e coloração da tabela de vendas

Combinando o código até agora, obtemos o seguinte: Na planilha "Vendas", em uma tabela com o nome do produto na coluna A, a quantidade na coluna B e o preço unitário na coluna C, calcule o valor na coluna D e pinte as linhas de 100.000 ienes ou mais de verde.

Verificação de vendas
Sub CheckSales()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Set ws = Worksheets("Vendas")
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastRow
        ' Quantidade = Quantidade × Preço Unitário
        ws.Cells(i, 4).Value = ws.Cells(i, 2).Value * ws.Cells(i, 3).Value
        ' Se for superior a 100.000 ienes, é verde.
        If ws.Cells(i, 4).Value >= 100000 Then
            ws.Cells(i, 4).Interior.Color = RGB(198, 239, 206)
        Else
            ws.Cells(i, 4).Interior.ColorIndex = xlNone
        End If
    Next i

    MsgBox lastRow - 1 & "calculou a linha"
End Sub

Contém variáveis (Dim), especificação de planilha (Set), linha final, repetição (For) e ramificação condicional (If). Se você puder ler "o que está sendo feito em qual célula" linha por linha, poderá alterar o número de linhas e as condições para se adequar à sua tabela.

Mesmo quando a IA cria o código, se você conseguir ler essa forma, poderá verificar por si mesmo qual coluna está sendo calculada e se as condições foram atendidas.

Saiba mais

Recomendamos verificar a lista de códigos para ver como escrevê-lo e depois experimentá-lo usando o Ficheiro do material didático. Este livro introdutório passo a passo permite que você pratique tudo, desde gravação de macros até variáveis, repetição e ramificação condicional com exemplos conectados.

Para quem se sente preso a fazer isso sozinho, ou para quem gostaria de discutir áreas de seu trabalho que podem ser automatizadas, fazer um curso ministrado por um instrutor também é uma opção.

A escolha de um método de estudo também é apresentada em Como estudar macros e VBA.