Objetivo: Este artigo demonstra como adicionar um formulário VBA Excel que realize navegação entre as planilhas do Excel.
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.
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;
4. Clique em Menu->Arquivo->Importar Arquivo…, selecione o arquivo descompactado e clique em Abrir;
5. O formulário frmPlanilhas terá sido importado ao arquivo PERSONAL.XLSB;
6. Agora clique no menu Inserir->Módulo
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;
4. Clique em Menu->Arquivo->Importar Arquivo…, selecione o arquivo descompactado e clique em Abrir;
5. O formulário frmPlanilhas terá sido importado ao arquivo PERSONAL.XLSB;
6. Agora clique no menu Inserir->Módulo
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.
Baixe a planilhaAbraço
Marcos Rieper










