Formulário VBA Excel de navegação entre planilhas

Statusbar VBA para indicar processamento
Statusbar VBA para indicar processamento
19 de janeiro de 2015
Fórmula para retornar o nome da planilha Excel
Fórmula para retornar o nome da planilha Excel
31 de janeiro de 2015

Objetivo: Este artigo demonstra como adicionar um formulário VBA Excel que realize navegação entre as planilhas do Excel.

Navegar planilhas Excel 1

Neste artigo vamos apresentar uma forma mais prática, rápida e profissional de navegar entre os formulários do Excel. É tão útil que acho que deveria ser incluso na próxima versão.

Esta funcionalidade é um formulário que, quando chamado, mostra todas as planilhas, em ordem alfabética, que o arquivo Excel aberto possui, e permite que ao selecionar uma outra planilha na caixa de combinação, seja alterada a planilha selecionada.

Navegar planilhas Excel 3

No arquivo que há em anexo a este artigo tem um exemplo da utilização deste formulário na planilha de Controle de estoque, disponibilizada neste artigo: http://guiadoexcel.com.br/planilha-de-controle-de-estoque-excel como exemplo.

O código fonte deste formulário está todo comentado e livre para utilização em suas aplicações, abaixo nós veremos como adicionar ele ao PERSONAL.XLSB de modo que possa acessar este formulário de qualquer arquivo Excel, e depois como adicionar ele a apenas um arquivo Excel.

1. Faça o download do arquivo do formulário em: Navegar entre planilhas Excel VBA, e descompacte os arquivos em uma pasta de sua preferência;

2. Habilite a guia Desenvolvedor seguindo estes passos: Habilitar guia desenvolvedor no Excel;

3. Clique na guia Desenvolvedor e em PERSONAL.XLSB;

Navegar planilhas Excel 4

4. Clique em Menu->Arquivo->Importar Arquivo…, selecione o arquivo descompactado e clique em Abrir;

Navegar planilhas Excel 5

5. O formulário frmPlanilhas terá sido importado ao arquivo PERSONAL.XLSB;

Navegar planilhas Excel 6

6. Agora clique no menu Inserir->Módulo

Navegar planilhas Excel 7

7. Clique no Módulo inserido e digite o seguinte código, ele irá chamar o formulário:

Public Sub lsPesquisarPlanilhas()
    frmPlanilhas.Show
End Sub

8. Agora volte para o Excel, fechando o VBA, clicando no botão no canto superior direito X, normalmente;

9. Clique na guia Desenvolvedor e no botão Macros, selecione a macro lsPesquisarPlanilhas e no botão Opções, digitando na tecla de atalho L, maiúsculo, assim toda vez que digitar CTRL+SHIFT+L o Excel irá automaticamente chamar o formulário de navegação entre as planilhas.

Assim, o formulário estará disponível em todas as planilhas do Excel. Veja o código fonte:

Dim lFormularioVisivel As String

Private Sub cmbPlanilhas_Change()
    'Se o formulário anterior estivesse invisível iria torná-lo novamente invisível
    If lFormularioVisivel  "" Then
        ActiveWorkbook.Worksheets(lFormularioVisivel).Visible = False
    End If

    'Identifica se o formulário é visível ou está oculto
    If ActiveWorkbook.Worksheets(cmbPlanilhas.Text).Visible = False Then
        'Armazena o nome do formulário selecionado se não estiver visível
        lFormularioVisivel = cmbPlanilhas.Text
        
        'Torna o formulário visível
        ActiveWorkbook.Worksheets(cmbPlanilhas.Text).Visible = True
        
        'Seleciona a planilha
        ActiveWorkbook.Worksheets(cmbPlanilhas.Text).Select
    Else
        'Seleciona a planilha
        ActiveWorkbook.Worksheets(cmbPlanilhas.Text).Select
    End If
End Sub

Private Sub cmbPlanilhas_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    'Se for pressionado a tecla ESC o sistema irá fechar o formulário
    If KeyCode = 27 Then
        cmdSair_Click
    End If
End Sub

Private Sub cmbPlanilhas_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Se for pressionado a tecla ESC o sistema irá fechar o formulário
    If KeyAscii = 27 Then
        cmdSair_Click
    End If
End Sub

Private Sub cmdSair_Click()
    'Fecha o formulário ao clicar o botão Sair
    Unload Me
End Sub

Private Sub UserForm_Activate()
    Dim ini, fim As Integer
    Dim i, j As Integer
    Dim menor As String

    'Adiciona todas as planilhas á combo de navegação do formulário
    For i = 1 To ActiveWorkbook.Sheets.Count
        cmbPlanilhas.AddItem ActiveWorkbook.Sheets(i).Name
    Next i

    'Técnica booble sort para realizar a ordenação dos itens do combo
    ini = 0
    fim = cmbPlanilhas.ListCount - 1
    For i = ini To fim - 1
        For j = i + 1 To fim
            If cmbPlanilhas.List(i) > cmbPlanilhas.List(j) Then
                menor = cmbPlanilhas.List(j)
                cmbPlanilhas.List(j) = cmbPlanilhas.List(i)
                cmbPlanilhas.List(i) = menor
            End If
        Next j
    Next i

End Sub

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Se for pressionado a tecla ESC o sistema irá fechar o formulário
    If KeyAscii = 27 Then
        cmdSair_Click
    End If
End Sub

 

Se for necessário inserir o formulário em uma única planilha é necessário seguir os seguintes passos:

1. Faça o download do arquivo do formulário em: Navegar entre planilhas Excel VBA, e descompacte os arquivos em uma pasta de sua preferência;

2. Habilite a guia Desenvolvedor seguindo estes passos: Habilitar guia desenvolvedor no Excel;

3. Clique na guia Desenvolvedor e no arquivo Excel que você tem aberto;

Navegar planilhas Excel 9

4. Clique em Menu->Arquivo->Importar Arquivo…, selecione o arquivo descompactado e clique em Abrir;

Navegar planilhas Excel 5

5. O formulário frmPlanilhas terá sido importado ao arquivo PERSONAL.XLSB;

Navegar planilhas Excel 10

6. Agora clique no menu Inserir->Módulo

Navegar planilhas Excel 7

7. Clique no Módulo inserido e digite o seguinte código, ele irá chamar o formulário:

Public Sub lsPesquisarPlanilhas()
    frmPlanilhas.Show
End Sub

8. Agora volte para o Excel, fechando o VBA, clicando no botão no canto superior direito X, normalmente;

9. Clique na guia Desenvolvedor e no botão Macros, selecione a macro lsPesquisarPlanilhas e no botão Opções, digitando na tecla de atalho L, maiúsculo, assim toda vez que digitar CTRL+SHIFT+L o Excel irá automaticamente chamar o formulário de navegação entre as planilhas.

Abraço

Marcos Rieper

9 Comments

  1. Anderson Leal disse:

    Bacana, estou criando um arquivo que terá muitas planilhas e este formulário será bem útil. Valeu por compartilhar seus conhecimentos.

  2. Moabia disse:

    Olá! Achei incrível a ferramenta, tentei fazer mas dá a seguinte mensagem de erro: Erro de compilação: O tipo definido pelo usuário não foi definido.
    Aponta a linha:
    Private Sub cmbPlanilhas_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    • Marcos Rieper disse:

      Boa tarde Moabia,

      Pode ser um problema de referências.

      Abra seu módulo, clique no menu Ferramentas > Referências, procure pela biblioteca marcada que estiver como AUSENTE e procure uma com o mesmo nome e provavelmente com outra versão e marque.

      Abraço
      marcos Rieper

  3. MARCOS P LEANDRO disse:

    Incrível tenho varias planilhas pra navegar, acabou o problema! Parabéns
    Aliás, será que eu poderia lhe enviar a planilha para umas dicas e melhorias? É uma planilha de lançamento de ganhos por produção e com base nos parâmetros imprime uma série de relatórios para conferência, migração para sistema e recibo.

  4. edson disse:

    não consegui realizar a importação.

  5. ERIK ABEL DOS SANTOS disse:

    Olá! Existe a possibilidade de ocultar algumas planilhas?
    Meu arquivo possui algumas planilhas que são apenas base de consulta.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.