Macros e VBA no Excel, Avaliação 8
O que você vai ver aqui
Fecha o Módulo 6 e a parte de planilhas. Aqui a automação ganha laço e condição — e você percebe, sem que ninguém diga, que já está programando.
Preparação
Ative a guia Desenvolvedor em Arquivo, Opções, Personalizar Faixa de Opções. Em Central de Confiabilidade, mantenha as Configurações de Macro como desabilitar com notificação.
Salve em .xlsm: o .xlsx descarta o código, e o aviso é fácil de aceitar sem ler.
Gravar
Desenvolvedor, Gravar Macro. Defina nome sem espaço, atalho opcional, local de armazenamento (esta pasta de trabalho ou a Pasta de Trabalho Pessoal de Macros, que a torna disponível em qualquer arquivo) e descrição.
Para executar: Alt + F8, um botão atribuído, ou o atalho definido.
Editor VBA e estrutura do código
Alt + F11. A estrutura de objetos é Application, Workbook, Worksheet, Range.
Sub FormatarRelatorio()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1:F1").Font.Bold = True
ws.Range("A1:F1").Interior.Color = RGB(220, 230, 241)
ws.Columns("A:F").AutoFit
End Sub
Elementos a explicar:
Dimdeclara variável,Setassocia um objeto.Range("A1")eCells(1, 1)referenciam células;Cellsé melhor em laços..Value,.Formula,.Fonte.Interiorsão propriedades..Select,.Copye.Deletesão métodos.- O apóstrofo inicia comentário.
Option Explicitno topo do módulo obriga a declaração de variáveis e evita erro de digitação silencioso.
Estruturas úteis
' Laço por linhas
For i = 2 To 100
If Cells(i, 5).Value > 1000 Then
Cells(i, 6).Value = "Meta batida"
Else
Cells(i, 6).Value = "Abaixo"
End If
Next i
' Percorrer todas as planilhas
For Each ws In ThisWorkbook.Worksheets
ws.Columns.AutoFit
Next ws
' Encontrar a última linha preenchida
ultima = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False no início e True no fim acelera macros longas de forma perceptível.
Depuração
F8 executa linha a linha, F9 marca ponto de interrupção, a Janela Locais mostra as variáveis e a Verificação Imediata testa expressões com ? ou Debug.Print.
Tratamento de erro básico: On Error Resume Next e On Error GoTo 0, usados com parcimônia — pelo mesmo motivo do SEERRO da aula 33.
Botões e formulários
Desenvolvedor, Inserir: controles de formulário (botão, caixa de combinação, caixa de seleção, botão de opção) e controles ActiveX. Atribua a macro ao botão com o botão direito. O UserForm, no editor VBA, permite criar telas de entrada de dados.
Automações típicas
- Formatar relatório padrão com um clique.
- Consolidar várias abas ou vários arquivos numa base única.
- Limpar e padronizar base importada, executando o roteiro da aula 35.
- Gerar PDF de um intervalo e salvar com nome baseado na data.
- Enviar planilha por e-mail pelo Outlook.
- Atualizar todas as tabelas dinâmicas do arquivo.
Segurança
Arquivo com macro de origem desconhecida é vetor clássico de malware — retomando a aula 08. Nunca habilite conteúdo em planilha recebida sem verificação. Assinatura digital de macro e locais confiáveis são as formas corretas de distribuir em ambiente corporativo.
Avaliação 8
Entregar um arquivo .xlsm contendo uma solução analítica completa sobre a base fornecida.
Requisitos obrigatórios
- Aba
Dadoscom base em Tabela, tratada. - Aba
Calculoscom, no mínimo: duas funções de pesquisa, três funções de data, três funções com critérios e três indicadores estatísticos. - Três tabelas dinâmicas respondendo a perguntas distintas, com agrupamento de datas e um valor exibido como percentual.
- Aba
Painelcom no mínimo quatro cartões de indicador, três gráficos de tipos diferentes e duas segmentações conectadas. - Uma macro gravada e editada que formate o relatório.
- Uma macro escrita com laço que percorra a base e preencha uma coluna de classificação.
- Botão atribuído a cada macro.
- Código comentado, com
Option Explicit. - Texto com cinco frases de interpretação dos dados do painel.
| Critério de correção | Pontos |
|---|---|
| Base tratada e estrutura de abas | 10 |
| Funções de pesquisa | 10 |
| Funções de data e de critérios | 10 |
| Indicadores estatísticos | 5 |
| Tabelas dinâmicas e agrupamentos | 15 |
| Painel: gráficos, cartões e segmentações | 20 |
| Macro gravada e editada | 10 |
| Macro com laço funcionando | 10 |
| Código comentado e legível | 5 |
| Interpretação escrita | 5 |
Na prática
- Grave uma macro de formatação com referência absoluta e outra com relativa, e compare o comportamento.
- Abra o editor e leia o código gerado, linha por linha.
- Escreva um laço que percorra a base e preencha uma coluna de classificação.
- Descubra a última linha preenchida por código e use-a como limite do laço.
- Atribua cada macro a um botão na planilha.
- Execute a macro em modo passo a passo com
F8, acompanhando a Janela Locais.
Exercícios
- Qual a diferença entre gravar com referência relativa e com referência absoluta?
- Escreva um laço que percorra 200 linhas e some apenas os valores acima de 500.
- Por que
.xlsxnão guarda macros? - Explique o efeito de
ScreenUpdatingigual aFalse. - Como encontrar a última linha preenchida de uma coluna por código?
Erros comuns
- Salvar em
.xlsxe perder o código. - Macro gravada com referência absoluta usada em base de tamanho variável.
- Usar
Selectem excesso, o que deixa o código lento e frágil.
Checklist de saída
Você entrega uma solução analítica automatizada, encerrando o Módulo 6.
Referências
- SANTOS, Heros. Automatize tarefas repetitivas no Microsoft Office com VBA. São Paulo: Novatec, 2018.
- ALEXANDER, Michael; KUSLEIKA, Richard. VBA para Office. Rio de Janeiro: Alta Books, 2016.
- Microsoft Support. Introdução ao VBA no Office. Disponível em: https://learn.microsoft.com/pt-br/office/vba/library-reference/concepts/getting-started-with-vba-in-office
Testa o que você leu
4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.