Olá amigos.
Estive um pouco ausente esses dias. O motivo é que estou migrando o meu blog para uma plataforma mais amigável e personalizada. Devido a enorme aceitação dos leitores, fez-se necessário oferecer um ambiente mais agradável e adaptável ao nosso olhar. Enfim… está dando um trabalhinho a mais. Porém valerá a pena.
Bom, hoje minha dica será pequena mas bastante usual. Ficará disponível para vocês adaptarem ao critério e usarem nos seus trabalhos. Vamos a ela.
Mostrarei como é possivel mover-se pelas diversas planilhas em um determinado arquivo do Excel usando controles personalizados de acordo com a usabilidade que pretendemos disponibilizar. Quando queremos ir de uma planilha para outra, usamos aquelas abinhas na parte inferior do excel, correto? Por exemplo, estamos na Plan1 e queremos ir para a Plan2, então clicamos na aba Plan2. Até aí, nada de mais. Imagine que tenhamos umas 100 planilhas. Temos que ficar procurando a aba correspondente para selecioná-la. Minha sugestão, entre muitas outras que podemos usar, é criar uma caixa de seleção, dessas drop-down, onde estarão listadas todas as planilhas, e por essa caixa, apontaremos a planilha que queremos ir.
Um exemplo, temos uma planilha com todas as diciplinas escolares. As disciplinas são os nomes das planilhas. Vamos projetar um campo que liste todas as planilhas e execute a navegação por cada uma delas. Vamos trabalhar!
Primeiro, renomeie a plan1 para “PlanInicio”. Em seguida adicione tantas planilhas quanto necessário para figurar as disciplinas e nomeie-as com seus respectivos títulos, Matemática, Português, História, etc.
Na PlanInicio, adicionaremos 1 caixa de combinação (presente na toolbox: caixa ferramentas de controle) e daremos o nome “cbo_ExibePlanilha”.

Vá ao editor do VBA (ALT+F11) e clique duas vezes sobre a PlanInicio e digite o código:
Private Sub cbo_ExibePlanilha_Change()
On Error GoTo Erro
'Se não for vazio
If cbo_ExibePlanilha.Text <> "" Then
'Seleciona a planilha escolhida
ThisWorkbook.Worksheets(cbo_ExibePlanilha.Text).Select
End If
Exit Sub
Erro:
MsgBox Err.Description
Exit Sub
End Sub
Private Sub Worksheet_Activate()
On Error GoTo Erro
Dim sh As Worksheet
'Limpa a combo
cbo_ExibePlanilha.Clear
'Lista todas as planilhas
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> ActiveSheet.Name Then
cbo_ExibePlanilha.AddItem sh.Name
End If
Next sh
Exit Sub
Erro:
MsgBox Err.Description
Exit Sub
End Sub
Adicione, em seguida, um módulo e insira o seguinte código:
Sub VoltarParaInicio()
ThisWorkbook.Worksheets("PlanInicio").Select
End Sub
Esse código servirá para executar o retorno à PlanInicio. E será adicionado ao botão retornar que será colocado em cada planilha de disciplina, da seguinte maneira.
Adicione um botão da caixa de ferramentas “Formulário”, pois com ele é possível adicionar uma macro de maneira bem rápida.

Na caixa que aparecerá na tela, atribua a macro “VoltarParaInicio”.

Selecione, com o botão direito do mouse, o botão criado e clique em “copiar”. E cole esse botão em cada planilha de disciplina.
Salve seu projeto. E agora já poderá movimentar-se pelas planilhas e retornar para a Planilha Inicial através de ferramentas personalizadas de maneira que atendam as necessidades de seus projetos.
E… não se esqueçam. Se quiserem um projeto avançado e totalmente personalizado que atendam as suas expectativas, podem falar comigo pelo link Orçamento. Presto soluções bem interessantes e com baixo custo.
Um abraço a todos.




não consigo renomear a caixa combo, ao abrir a propriedade opçãp do mesmo não há algum lugar que posso colocar o nome, e qdo for apertar alt e f11 a combo deve estar selecionado
Reply
exceldoseujeito Reply:
março 10th, 2009 at 12:20
Para renomear a combo você deve alterar o valor (Name) na caixa de propriedades. Quando a aba “Alfabético” na caixa de propriedades estiver selecionada, será a primeira opção exibida. Lembro a você que se alterar o nome da combo deverás alterar a Sub no código VBA, Ok?!!! Abraço
Reply
Por mais que eu tente não consegui fazer funcionar esse código… o segundo já está sendo muito útil, mas como a cada semana tenho q criar uma nova aba… esta cada dia mais dificil criar um botão para cada aba…. não sei o que estou fazendo de errado…. pois acertei o nome do combo, e fiz com muito cuidado…. por acaso teria como mandar um arquivo para que possa entender também qual é o meu erro???
Reply
exceldoseujeito Reply:
junho 29th, 2009 at 16:10
Gabriel,
Acredito que seu erro possa ser pq no código escrito aqui o site foi alterado para codificação HTML e eu não percebi.
Ocorre onde está assim:
Private Sub cbo_ExibePlanilha_Change()On Error GoTo Erro
'Se não for vazio
If cbo_ExibePlanilha.Text <> "" Then
...
Onde aparece <> era pra estar , que significa diferente de. Mas em HTML servem para identificar tags.
Mas caso não seja isso, no final deste artigo tem um link para download.
Adiantando pra vc:
http://www.exceldoseujeito.com.br/wp-includes/sources/NavegarPelasPlanilhas.rar
Abraço.
Reply
muito obrigado pela ajuda….
mais uma coisa, estando as planilhas ocultas, existe alguma forma de fazer isso?
Reply
exceldoseujeito Reply:
junho 29th, 2009 at 19:15
Sim. Mas, primeiro, você teria que reexibir a planilha que deseja selecionar, usando o ThisWorkbook.Worksheets(“NomeDaPlanilhaQueVaiSelecionar”).Visible = True
Ok?!!!
Reply
Muito obrigado… mas :P
nossa, to enchendo sua paciencia….
mas vamos lá,
a minha idéia inicial seria ocultar as abas somente para vizualização… de forma que só pudesse se mover pela planilha atravéz desse artifício (do jeito elegante)ou por botões, diminuindo as chances das pessoas ficarem brincando com a ordem das planilhas, ou fazendo besteiras… obrigado pela atenção novamente.
Reply
exceldoseujeito Reply:
junho 30th, 2009 at 10:51
Gabriel,
Você pode criar uma Rotina para ocultar as abas das planilhas ao abrir o arquivo (Workbook_Open) ou incluí-la na rotina, já existente, de ativação da planilha (Worksheet_Ativate). Assim:
ActiveWindow.DisplayWorkbookTabs = False
Isso faz com que as abas fiquem ocultas.
Espero ter ajudado.
Reply
Só uma dúvida,
o que está ocorrendo pois aparece sempre a mensagem “o objeto é obrigatório” quando retorno a pagina inicial?
Reply
exceldoseujeito Reply:
julho 10th, 2009 at 13:44
Não posso dizer com certeza o que está ocorrendo, pode ser a ausencia de algum controle ou o bloqueio deste, enfim, várias possibilidade.
Faça assim, comente a análise de erros no procedimento Worksheet_Activate, colando uma aspas simples (‘) antes de On Error GoTo Erro.
Rode a planilha. A linha que apresentar erro ficará destacada em amarelo.
Poste aqui que vou analisar.
A princípio na planilha de exemplo que eu testei está sem problemas aqui.
Abraço
Reply
Bom dia!
Seu tutorial esta excelente e facil de entender.
Porém quando executo a comobobox não é carregada, tenho que clicar em outra planilha para carrega-la, existe a possíbilidade de carrega-la qndo abro o Excel.
Obrigada
Reply
Reinaldo Coral Reply:
setembro 22nd, 2009 at 14:43
Olá, Simone!
Para que a combobox seja carregada automaticamente quando o arquivo for aberto, basta colocar o mesmo código que está na ativação da planilha no método Workbook_Open da Pasta de Trabalho. Somente, tenha atenção para identificar o nome da combo e em qual planilha ela está. O código abaixo já está adaptado corretamente.
Insira-o no módulo de classe EstaPastaDeTrabalho, ok?!!
Private Sub Workbook_Open()On Error GoTo Erro
Dim sh As Worksheet
'Limpa a combo
Worksheets("PlanInicio").cbo_ExibePlanilha.Clear
'Lista todas as planilhas
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> ActiveSheet.Name Then
Worksheets("PlanInicio").cbo_ExibePlanilha.AddItem sh.Name
End If
Next sh
Exit Sub
Erro:
MsgBox Err.Description
Exit Sub
End Sub
Abraço!
Reply
Testei o exemplo e ficou beleza…
Agora, me der uma ideia se no caso eu colocasse
nesse mesmo projeto mais um combobox
para nome da escola.
No primeiro Combobox (Matematica etc…)
No segundo Combobox (Escola João etc…)
Como faço?
Reply
Alguem tem algum exemplo, de como colocar 2 combobox
em uma planilha? SENDO QUE O PRIMEIRO COMBOBOX
NAVEGA NA PLANILHA-1, 2 e 3. E SEGUNDO COMBOBOX NAVEGA PELA PLANILHA 4, 5 e 6.
Grato,
Reply
Olá Pessoal?
Como faço uma Planilha (Menu) com dois COMBOBOX,
onde o primeiro Combobox navega pela Plan1 – Plan2 e Plan3.
Enquanto o segundo Combobox navega pela Plan4 – Plan5 e Plan6.
Alguém tem algum exemplo?
Grato,
Reply
Reinaldo Coral Reply:
junho 27th, 2010 at 10:07
Robson,
Você pode definir manualmente as planilhas para cada combobox que você colocar no menu. Uma sugestão é você alterar o código que está no Evento Private Sub Wooksheet_Activate(), veja:
[code]
Private Sub Worksheet_Activate()
On Error GoTo Erro
Dim sh As Worksheet
'Limpa a combo
cbo_ExibePlanilha1.Clear
cbo_ExibePlanilha2.Clear
'Lista todas as planilhas para a 1a. combobox
cbo_ExibePlanilha1.AddItem "Nome da Planilha 1"
cbo_ExibePlanilha1.AddItem "Nome da Planilha 2"
cbo_ExibePlanilha1.AddItem "Nome da Planilha 3"
'Lista todas as planilhas para a 2a. combobox
cbo_ExibePlanilha2.AddItem "Nome da Planilha 4"
cbo_ExibePlanilha2.AddItem "Nome da Planilha 5"
cbo_ExibePlanilha2.AddItem "Nome da Planilha 6"
Exit Sub
Erro:
MsgBox Err.Description
Exit Sub
End Sub
Boa sorte, abrç
Reply