15 Macros que Você Deveria Conhecer no Excel

Neste artigo você conhecerá 15 macros que você deveria conhecer no Excel.

Macro Excel para Habilitar a guia Desenvolvedor

Inicialmente habilite a guia desenvolvedor conforme abaixo.

Para inserir os códigos das macros pressione ALT+F11ou na guia Desenvolvedor no botão Visual Basic e clique em Inserir->Módulo e adicione os códigos conforme necessário.

E para chamar os códigos pode clicar em Inserir->Imagem e clicar com o botão direito e selecionar Atribuir Macro e selecionar a macro que deseja.

Navegar Entre Planilhas VBA

O código abaixo é para navegar entre planilhas, para a próxima e a anterior.

Public Sub lsProximo()
    If ActiveSheet.Index < ActiveWorkbook.Sheets.Count Then
        Sheets(ActiveSheet.Index + 1).Select
    End If
End Sub

Public Sub lsAnterior()
    If ActiveSheet.Index > 1 Then
        Sheets(ActiveSheet.Index - 1).Select
    End If
End Sub

Ajustar Colunas Automaticamente VBA

Esta macro atualiza a planilha ajustando o tamanho das colunas de forma automática.

Sub lsAutoAjuste()
    Columns("C:AA").EntireColumn.AutoFit
    Range("C8").Select
End Sub

Macros Excel para Habilitar Cálculo Automático, manual e Calcular

No código abaixo você tem uma macro de como habilitar o código automático, manual ou ainda calcular planilhas no Excel.

Sub lsCalcular()
    ActiveSheet.Calculate
End Sub

Sub lsCalcularManual()
    Application.Calculation = xlManual
End Sub
    
Sub lsCalcularAutomatico()
    Application.Calculation = xlAutomatic
End Sub

Proteger Todas as Planilhas no Excel com VBA

Este código protege todas as planilhas no Excel de forma automática inserindo inclusive a senha.

Basta colar os códigos abaixo e depois ao clicar no botão e chamar o VBA ele será executado e irá solicitar a senha para proteger as planilhas.

'Função que protege todas as planilhas de um arquivo
Sub lsProtegerTodasAsPlanilhas()
    'Declara as variáveis necessárias
    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer
 
    'Solicita a senha
    'O método InputBox é utilizado para solicitar um valor através de um formulário
    lPass = InputBox("Proteger todas as planilhas:", "Senha")
 
    'Inicia as variáveis
    'O método Worksheets.Count passa a quantidade de planilhas existentes no arquivo
    lQtdePlan = Worksheets.Count
    lPlanAtual = 1
 
    'Loop pelas planilhas
    'A função While realiza um loop de código enquanto não passar por todas as planilhas contadas
    While lPlanAtual <= lQtdePlan
        'O método Worksheets(lPlanAtual).Activate ativa a planilha conforme o índice atual 1, 2, 3...
        Worksheets(lPlanAtual).Activate
 
        'O método .Protect proteje a planilha passando os parâmetros da planilha atual
        ActiveSheet.Protect Password:=lPass, _
                            DrawingObjects:=CBool(ActiveSheet.ProtectDrawingObjects), _
                            Contents:=CBool(ActiveSheet.ProtectContents), _
                            AllowFormattingCells:=ActiveSheet.Protection.AllowFormattingCells, _
                            AllowFormattingColumns:=ActiveSheet.Protection.AllowFormattingColumns, _
                            AllowFormattingRows:=ActiveSheet.Protection.AllowFormattingRows, _
                            AllowInsertingColumns:=ActiveSheet.Protection.AllowInsertingColumns, _
                            AllowInsertingRows:=ActiveSheet.Protection.AllowInsertingRows, _
                            AllowInsertingHyperlinks:=ActiveSheet.Protection.AllowInsertingHyperlinks, _
                            AllowDeletingColumns:=ActiveSheet.Protection.AllowDeletingColumns, _
                            AllowDeletingRows:=ActiveSheet.Protection.AllowDeletingRows, _
                            AllowSorting:=ActiveSheet.Protection.AllowSorting, _
                            AllowFiltering:=ActiveSheet.Protection.AllowFiltering, _
                            AllowUsingPivotTables:=ActiveSheet.Protection.AllowUsingPivotTables
 
        'Muda o índice para passar para a próxima planilha
        lPlanAtual = lPlanAtual + 1
    Wend
 
    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas protegidas!"
 
End Sub

Desproteger Todas as Planilhas no Excel com VBA

Este código desprotege todas as planilhas no Excel de forma automática inserindo inclusive a senha.

'Função que desprotege todas as planilhas de um arquivo
Sub lsDesprotegerTodasAsPlanilhas()
    'Declara as variáveis necessárias
    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer
 
    'Solicita a senha
    'O método InputBox é utilizado para solicitar um valor através de um formulário
    lPass = InputBox("Desproteger todas as planilhas:", "Senha")
 
    'Inicia as variáveis
    'O método Worksheets.Count passa a quantidade de planilhas existentes no arquivo
    lQtdePlan = Worksheets.Count
    lPlanAtual = 1
 
    'Loop pelas planilhas
    'A função While realiza um loop de código enquanto não passar por todas as planilhas contadas
    While lPlanAtual <= lQtdePlan
        'O método Worksheets(lPlanAtual).Activate ativa a planilha conforme o índice atual 1, 2, 3...
        Worksheets(lPlanAtual).Activate
 
        'O método .UnProtect desprotege a planilha
        ActiveSheet.Unprotect Password:=lPass
 
        'Muda o índice para passar para a próxima planilha
        lPlanAtual = lPlanAtual + 1
    Wend
 
    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas desprotegidas!"
 
End Sub

Imprimir Planilhas com VBA no Excel

O código VBA abaixo imprime planilhas automaticamente ao ser executado.

Public Sub lsImprimir()
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, IgnorePrintAreas:=False
End Sub

Gerar PDF no Excel com VBA

Aqui você tem como gerar PDF no Excel com VBA de forma automática.

Public Sub lsPDF()
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=ActiveSheet.Range("lstrPasta").Value & "\" & ActiveSheet.Range("lstrArquivo").Value & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Gerar Backup de Um Arquivo Excel no Excel Copiando e Salvando com Outro Nome

No exemplo abaixo nós temos uma cópia automática da pasta de trabalho com a data do dia do backup.

Public Sub lsBackup()
    ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & Format(Date, "yy-mm-dd") & " " & ThisWorkbook.Name
End Sub

Atualizar Dados no Excel com VBA

Neste código de VBA você terá como atualizar os dados automaticamente à partir da execução da macro.

Ela irá atualizar as tabelas dinâmicas e conexões automaticamente.

Public Sub lsAtualizar()
    ActiveWorkbook.RefreshAll
End Sub

Formulário Automático no Excel com VBA

O Excel possui um gerador de formulário automático no Excel, basta colocar uma tabela à partir da célula A1 com cabeçalhos.

Public Sub lsFormularioAutomatico()
    ActiveSheet.ShowDataForm
End Sub

Atingir Meta Automático

No exemplo abaixo você tem uma solução criada para realizar o cálculo automático de atingir meta à partir do valor de um concorrente para identificar a margem para alcançar o valor.

Sub lsAtingirMeta()
    Range("C28").GoalSeek Goal:=ActiveSheet.Range("ValorConcorrente").Value, ChangingCell:=Range("C17")
End Sub

Tela Cheia no Excel com VBA

O código abaixo faz com que o Excel abra com tela cheia. O código VBA:

  1. Oculta a guia de menu
  2. Oculta a barra de fórmula
  3. Oculta a barra de status
  4. Altera o nome do Excel
  5. Oculta a barra horizontal
  6. Oculta a barra vertical
  7. Oculta as planilhas
  8. Oculta os títulos de linhas e colunas
  9. Oculta os zeros da planilha
  10. Oculta as linhas de grade
Sub lsLigarTelaCheia()
    'Oculta todas as guias de menu
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    
    'Ocultar barra de fórmulas
    Application.DisplayFormulaBar = False
    
    'Ocultar barra de status, disposta ao final da planilha
    Application.DisplayStatusBar = False
    
    'Alterar o nome do Excel
    Application.Caption = "Controle de manutenção de veículos 3.0"
    
    With ActiveWindow
        'Ocultar barra horizontal
        .DisplayHorizontalScrollBar = False
        
        'Ocultar barra vertical
        .DisplayVerticalScrollBar = False
        
        'Ocultar guias das planilhas
        .DisplayWorkbookTabs = False
        
        'Oculta os títulos de linha e coluna
        .DisplayHeadings = False
        
        'Oculta valores zero na planilha
        .DisplayZeros = False
        
        'Oculta as linhas de grade da planilha
        .DisplayGridlines = False
    End With
End Sub

Tirar a Tela Cheia no Excel com VBA

O código abaixo faz com que o Excel abra com tela cheia. O código VBA:

  1. Exibe a guia de menu
  2. Exibe a barra de fórmula
  3. Exibe a barra de status
  4. Altera o nome do Excel
  5. Exibe a barra horizontal
  6. Exibe a barra vertical
  7. Exibe as planilhas
  8. Exibe os títulos de linhas e colunas
  9. Exibe os zeros da planilha
  10. Exibe as linhas de grade
Sub lsDesligarTelaCheia()
    'Reexibe os menus
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
    
    'Reexibir a barra de fórmulas
    Application.DisplayFormulaBar = True
    
    'Reexibir a barra de status, disposta ao final da planilha
    Application.DisplayStatusBar = True
    
    'Reexibir o cabeçalho da Pasta de trabalho
    ActiveWindow.DisplayHeadings = True
    
    'Retornar o nome do Excel
    Application.Caption = ""
    
    With ActiveWindow
        'Reexibir barra horizontal
        .DisplayHorizontalScrollBar = True
        
        'Reexibir barra vertical
        .DisplayVerticalScrollBar = True
        
        'Reexibir guias das planilhas
        .DisplayWorkbookTabs = True
        
        'Reexibir os títulos de linha e coluna
        .DisplayHeadings = True
        
        'Reexibir valores zero na planilha
        .DisplayZeros = True
        
        'Reexibir as linhas de grade da planilha
        .DisplayGridlines = True
    End With
End Sub

Selecionar a Pasta com VBA no Excel

No código abaixo temos a seleção de pastas no Excel utilizando o VBA.

'Procedimento para selecionar arquivos
Sub lsSelecionarPasta()
    
    Dim fDlg As FileDialog
    Dim lArquivo As String

    'Chama o objeto passando os parâmetros
    Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogFolderPicker)
    With fDlg
        'Alterar esta propriedade para True permitirá a seleção de vários arquivos
        .AllowMultiSelect = False

        'Determina a forma de visualização dos arquivos
        .InitialView = msoFileDialogViewDetails

        'Determina qual o drive inicial
        .InitialFileName = ActiveSheet.Range("LocalPasta").Value
    End With

    'Retorna a pasta selecionada
    If fDlg.Show = -1 Then
        lArquivo = fDlg.SelectedItems(1)
        ActiveSheet.Range("LocalPasta").Value = lArquivo
    Else
        MsgBox "Não foi selecionada a pasta"
    End If

End Sub

Ajustar Planilha Conforme a Resolução da Tela

Podemos também realizar um ajuste da tela para que seja automaticamente configurado conforme a resolução.

Para isso defina em cada planilha a área que deseja enxergar e clique em definir nome e defina o nome como zoom.

Faça com escopo somente para a planilha.

Adicione para todas as planilhas.

E após isso coloque o código no módulo criado.

Após isso pode ligar com a imagem na tela clicando com o botão direito sobre a imagem e selecione atribuir macro e selecione lsControlaZoom.

Public Sub lsResolucao()
    ActiveSheet.Range("area_zoom").Select
    ActiveWindow.Zoom = True
    ActiveSheet.Range("B4").Select
End Sub

Ocultar e Reexibir Segmentação de Dados no Excel

O código abaixo oculta e reexibe as segmentações de dados no Excel à partir de um clique nos botões para a chamada dos códigos VBA.

Veja no link seguinte como ocultar e reexibir a segmentação de dados no Excel: https://www.guiadoexcel.com.br/ocultar-e-reexibir-segmentacao-de-dados-vba-excel/

No nosso exemplo usamos o seguinte código VBA.

Global lflMinhasPlacas As Boolean


Public Sub lsFiltrarPlaca()
    If lflMinhasPlacas = True Then
        ActiveSheet.Shapes.Range(Array("Placa 1")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("Motorista")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("Fornecedor")).Visible = msoFalse
        lflMinhasPlacas = False
    Else
        ActiveSheet.Shapes.Range(Array("Placa 1")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("Motorista")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("Fornecedor")).Visible = msoTrue
        lflMinhasPlacas = True
    End If
End Sub

Veja no vídeo ao topo deste artigo como criar do zero.

Download Planilha Exemplo com 15 Macros Excel que Deveria Conhecer

Clique no botão abaixo para realizar o  download da planilha com exemplo de dados:

Baixe a planilha

Sair da versão mobile