Como criar menus personalizados em sua planilha do Excel via VBA

Compartilhe agora:

A faixa de opções do Excel pode ser modificada para se adequar a um trabalho específico. Este exercício cria novos menus que direcionam os usuários para planilhas específicas relevantes para suas tarefas.

Neste artigo, vamos apresentar como criar menus personalizados em sua planilha Excel, assim:Crie menus personalizados em sua planilha do Excel

Este artigo pressupõe que o leitor tenha a faixa Desenvolvedor exibida e esteja familiarizado com o Editor VBA. Se não, por favor, Google “Excel Developer Tab” ou “Excel Code Window”.

livro

A pasta de trabalho a ser usada possui várias planilhas. Sugerimos que você use o exemplo encontrado aqui. Se parece com isso.A pasta de trabalho de amostra

As quatro primeiras folhas são disfuncionais, sendo usadas neste exercício apenas para fins de navegação.

A quinta planilha manterá a estrutura de menu personalizada específica para esta pasta de trabalho. No momento, deve estar em branco, exceto por um botão de teste.

Adicionar a estrutura do menu

Copie o seguinte bloco de texto na célula A1 da planilha “MenuPlanilha”.

Nível,Legenda,Posição/Macro,Divisor

1,&Ferramentas do Utilizador,10

2,Mostrar Painel,Selecionar Painel

2,Adicionar novo,,VERDADEIRO

3,Cliente,SelecionarCliente

3,Localização,Selecionar Localização

3,Gerente,SelecionarGerente

2,Fechar,FecharArquivo

Formatar a Estrutura do Menu

Esses dados CSV terminam na coluna A. Para formatá-los em células individuais do Excel, selecione a coluna A e use 'Texto para colunas' no Guia de dados. O delimitador seria “vírgula”.Formate-o em células individuais do Excel

O acima, uma vez adicionado o código apropriado, nos dará a estrutura de menu baseada em níveis à esquerda.A estrutura de menu baseada em níveis

O primeiro nível, neste exercício, é arbitráriorarily colocado como o décimo item na barra de menu, como você verá quando a largura total da pasta de trabalho for exibida.

Criando e Destruindo Menus

Como queremos apenas os novos menus para esta pasta de trabalho específica, iremos criá-los e destruí-los ao abrir e fechar a pasta de trabalho.

O código abaixo é comotart. Ele será acionado quando a pasta de trabalho for aberta ou fechada. Copie-o para um módulo em sua pasta de trabalho

Atribua o botão de teste no MenuSheet para Auto_Open.

Option Explicit Sub auto_Open() Chamada DeleteMenu Chamada CreateMenu End Sub Sub auto_Close() Chamada DeleteMenu End Sub

Abaixo, examinamos nossa estrutura de menu mais de perto.Examine nossa estrutura de menu mais de perto

Nenhuma macro é acionada por adicionar Novo porque não tem nenhuma função além de pai de submenus.

Esse tipo de estrutura de menu é fácil de manter. Basta adicionar novos itens com suas macros, estando atento ao nível do menu.

O código

Anexe o seguinte código VBA ao módulo. Isso examinará o “MenuSheet” e criará o menu personalizado.

Sub CreateMenu() ' Chamado de Auto_Open. 'NOTA: Não há tratamento de erro nesta sub-rotina Dim MenuSheet As Worksheet Dim MenuObject As CommandBarPopup Dim MenuItem As Object Dim SubMenuItem As CommandBarButton Dim sRow As Integer Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divisor Set MenuSheet = ThisWorkbook.Sheets("MenuSheet ") Chama DeleteMenu sRow = 2 'start row ' Adicione menus usando a estrutura de acordo com MenuSheet Range("A" & sRow). Selecione Do While ActiveCell > "" '**************** With MenuSheet MenuLevel = . Cells(sRow, 1) Caption = .Cells(sRow, 2) PositionOrMacro = .Cells(sRow, 3) Divider = .Cells(sRow, 4) NextLevel = .Cells(sRow + 1, 1) End With Select Case MenuLevel Case 1 ' Adicionar o menu de nível superior à planilha CommandBar Set MenuObject = Application.CommandBars(1). _ Controls.Add(Type:=msoControlPopup, _ Before:=PositionOrMacro, _ Temporary:=True) MenuObject.Caption = Caption Case 2 ' Um item de menu Se NextLevel = 3 Then Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup) Else Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton) MenuItem.OnAction = PositionOrMacro End If MenuItem.Caption = Caption If Divider Then MenuItem.BeginGroup = True Case 3 ' Um conjunto de itens de submenu SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton) SubMenuItem.Caption = Caption SubMenuItem.OnAction = PositionOrMacro If Divider Then SubMenuItem.BeginGroup = True End Select sRow = sRow + 1 Range("A" & sRow).Selecione '************************ *************** Loop Sheets("Dashboard").Activate End Sub Sub DeleteMenu() ' Este sub será executado quando a pasta de trabalho estiver fechando Dim MenuSheet As Worksheet Dim sRow As Integer Dim Caption As String On Error Resume Next Set MenuSheet = ThisWorkbook.Sheets("MenuSheet") sRow = 2 Range("A" & sRow).Selecione Do While ActiveCell > "" If MenuSheet.Cells(sRow, 1) = 1 Then Caption = MenuSheet.Cells(sRow, 2) Application.CommandBars(1).Controls(Caption).Delete End If sRow = sRow + 1 Range("A" & sRow).Select Loop On Error GoTo 0 End Sub Sub SelectDashboard() Sheets("Painel").Ativar End Sub Sub SelectClient() Sheets("Cliente").Ativar End Sub Sub SelectLocation() Sheets("Local").Ativar End Sub SelectManager() Sheets("Gerente").Ativar End Sub Sub CloseFile() MsgBox "Fechar! (escreva seu próprio código no módulo)" End Sub

Teste o código com o botão Testar. O menu do usuário recém-criado será encontrado na posição 10 do menu, em Suplementos.

Recuperação Excel

O Excel às vezes fica instável e trava ao abrir, danificando o arquivo de origem. Onde não conseguir recuperar o arquivo, é útil ter uma ferramenta para reparar Danos no Excel caso contrário, todo o trabalho sem backup será lost.

Introdução do autor:

Felix Hooker é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar rar e produtos de software de recuperação SQL. Para mais informações visite www.datanumen.com

Compartilhe agora:

Comentários estão fechados.