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

Statusbar VBA para indicar processamento
Statusbar VBA para indicar processamento
19 de janeiro de 2015
Reativação do Fórum Guia do excel
Reativação do Fórum Guia do excel
28 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.

Download “Navegação entre planilhas” Controle-de-estoque-Excel.zip – Baixado 39 vezes – 62 KB

Abraço

Marcos Rieper

8 Comentários

  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.

Deixe uma resposta

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

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.