Navegar pelas planilhas de maneira elegante

Escrito por: Reinaldo Coral Em 12 - fevereiro - 2009

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.

Bookmark and Share

12 Comentários

  1. ton silva Disse,

    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:

    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

    Comentário feito em março 10th, 2009 às 2:43

  2. Gabriel Disse,

    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:

    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

    Comentário feito em junho 29th, 2009 às 15:53

  3. Gabriel Disse,

    muito obrigado pela ajuda….
    mais uma coisa, estando as planilhas ocultas, existe alguma forma de fazer isso?

    Reply

    exceldoseujeito Reply:

    Sim. Mas, primeiro, você teria que reexibir a planilha que deseja selecionar, usando o ThisWorkbook.Worksheets(“NomeDaPlanilhaQueVaiSelecionar”).Visible = True
    Ok?!!!

    Reply

    Comentário feito em junho 29th, 2009 às 17:43

  4. Gabriel Disse,

    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:

    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

    Comentário feito em junho 30th, 2009 às 10:26

  5. tertiussidney Disse,

    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:

    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

    Comentário feito em julho 10th, 2009 às 10:56

  6. Simone Amorin Disse,

    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:

    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

    Comentário feito em setembro 22nd, 2009 às 8:26

Deixar um comentário

Get Adobe Flash playerPlugin by wpburn.com wordpress themes