Pular para o conteúdo

A primeira escola especializada em tecnologia do Alto Solimões, com corpo técnico formado na área.

Módulo 6: Planilhas eletrônicas avançadas

Macros e VBA no Excel, Avaliação 8

Referência relativa, laços e a solução analítica completa que fecha o módulo

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:

  • Dim declara variável, Set associa um objeto.
  • Range("A1") e Cells(1, 1) referenciam células; Cells é melhor em laços.
  • .Value, .Formula, .Font e .Interior são propriedades.
  • .Select, .Copy e .Delete são métodos.
  • O apóstrofo inicia comentário.
  • Option Explicit no 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

  1. Aba Dados com base em Tabela, tratada.
  2. Aba Calculos com, 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.
  3. Três tabelas dinâmicas respondendo a perguntas distintas, com agrupamento de datas e um valor exibido como percentual.
  4. Aba Painel com no mínimo quatro cartões de indicador, três gráficos de tipos diferentes e duas segmentações conectadas.
  5. Uma macro gravada e editada que formate o relatório.
  6. Uma macro escrita com laço que percorra a base e preencha uma coluna de classificação.
  7. Botão atribuído a cada macro.
  8. Código comentado, com Option Explicit.
  9. Texto com cinco frases de interpretação dos dados do painel.
Critério de correçãoPontos
Base tratada e estrutura de abas10
Funções de pesquisa10
Funções de data e de critérios10
Indicadores estatísticos5
Tabelas dinâmicas e agrupamentos15
Painel: gráficos, cartões e segmentações20
Macro gravada e editada10
Macro com laço funcionando10
Código comentado e legível5
Interpretação escrita5

Na prática

  1. Grave uma macro de formatação com referência absoluta e outra com relativa, e compare o comportamento.
  2. Abra o editor e leia o código gerado, linha por linha.
  3. Escreva um laço que percorra a base e preencha uma coluna de classificação.
  4. Descubra a última linha preenchida por código e use-a como limite do laço.
  5. Atribua cada macro a um botão na planilha.
  6. Execute a macro em modo passo a passo com F8, acompanhando a Janela Locais.

Exercícios

  1. Qual a diferença entre gravar com referência relativa e com referência absoluta?
  2. Escreva um laço que percorra 200 linhas e some apenas os valores acima de 500.
  3. Por que .xlsx não guarda macros?
  4. Explique o efeito de ScreenUpdating igual a False.
  5. Como encontrar a última linha preenchida de uma coluna por código?

Erros comuns

  • Salvar em .xlsx e perder o código.
  • Macro gravada com referência absoluta usada em base de tamanho variável.
  • Usar Select em 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

Testa o que você leu

4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.

Pergunta 1 de 4
Qual a diferença entre gravar com referência relativa e com referência absoluta?