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