Como personalizar excel 2016 menus de atalho em vba

Antes Excel 2007, programadores de VBA usado o objeto CommandBar para a criação de menus personalizados, barras de ferramentas personalizadas e de atalho personalizado (direita; clique) menus. Começando com o Excel 2007, o objeto CommandBar está em uma posição bastante estranho. Se você escrever código para personalizar um menu ou uma barra de ferramentas, intercepta Excel que código e ignora muitos dos seus comandos.

Em vez de exibir o seu aprimoramento interface bem pensada, Excel 2007 (como versões posteriores) simplesmente despeja seus menus personalizados e barras de ferramentas em um pega-tudo guia da fita chamado Add-Ins.

Do menu e barra de ferramentas personalizações acabar nos comandos do menu Add-Ins → ou o grupo Suplementos → Barras de ferramentas personalizadas. Mas personalizar menus de atalho (que também usa o objeto CommandBar) ainda funciona como sempre foi - bem, mais ou menos.

linha de fundo? O objeto CommandBar não é muito mais útil, mas continua a ser a única maneira de personalizar menus de atalho.

Adicionando um novo item ao menu de atalho celular

Abaixo, você vai encontrar código de exemplo que adiciona um novo item ao menu de atalho que aparece quando você direita; clique em uma célula. Você deve ser capaz de se adaptar estes exemplos para suas necessidades.

Video: Vídeo 63 - Menu em Formulário do Excel - VBA + API

Você pode melhorar que o utilitário Change Case um pouco, tornando-a disponível a partir do menu de atalho celular.

O procedimento AddToShortcut adiciona um novo item de menu ao menu de atalho celular. Você pode adaptá-lo para apontar para seus próprios macros, alterando as propriedades da legenda e OnAction do objeto nomeado NewControl.

Video: Criando uma Barra de Menu Personalizada - Tutorial 25 - Access 2010 com VBA

Sub AddToShortCut () Dim Bar Como CommandBarDim NewControl Como CommandBarButtonDeleteFromShortcutSet Bar = Application.CommandBars ( “Cell”) Definir NewControl = Bar.Controls.Add _ (Type: = msoControlButton, ID: = 1, _temporary: = True) Com NewControl.Caption = “&Change Case”.OnAction =‘ChangeCase’.Style = msoButtonIconAndCaptionEnd comend Sub

Ao modificar um menu de atalho, que a modificação permanece em efeito até que você reinicie o Excel. Em outras palavras, os menus de atalho modificados não redefinir-se quando você fecha o livro que contém o código VBA. Portanto, se você escrever código para modificar um menu de atalho, você quase sempre escrever código para reverter o efeito da sua modificação.

O procedimento DeleteFromShortcut remove o novo item de menu no menu de atalho Célula:

Sub DeleteFromShortcut () On Error Resume NextApplication.CommandBars ( “Cell”). Controls _ ( “&Change Case”). DeleteEnd Sub


Isto mostra como o novo item de menu exibido depois de certo, clique em uma célula.

O menu de atalho celular mostrando um item de menu personalizado: Alterar Case.

Video: EXCEL VBA PERSONALIZANDO USERFORM

O menu de atalho celular mostrando um item de menu personalizado: Alterar Case.

O primeiro comando real após a declaração de um par de variáveis ​​chama o procedimento DeleteFromShortcut. Esta declaração garante que apenas um item de menu Change Case aparece no menu de atalho celular. Tente comentar essa linha (colocar um apóstrofo no início da linha) e executar o procedimento algumas vezes - mas não se empolgue!

direito; clique em uma célula, e você pode ver várias instâncias do item de menu Alterar Case. Livrar-se de todas as entradas, executando DeleteFromShortcut várias vezes (uma vez para cada item de menu adicional).

Finalmente, você precisa de uma forma de adicionar o item de menu de atalho quando o livro é aberto e para excluir o item de menu quando o livro está fechado. Fazer isso é fácil. Basta adicionar estes dois procedimentos de evento para o módulo de código ThisWorkbook:

Private Sub Workbook_Open () Chamada AddToShortCutEnd SubPrivate Sub Workbook_BeforeClose (Cancel As Boolean) Chame DeleteFromShortcutEnd Sub

O procedimento Workbook_Open é executado quando o livro é aberto, eo procedimento Workbook_BeforeClose é executado antes do livro está fechado. Apenas o que o médico ordenou.

O que é diferente no Excel 2013 e Excel 2016?

Se você já usou VBA para trabalhar com menus de atalho no Excel 2007 ou anterior, você precisa estar ciente de uma mudança significativa.

No passado, se o seu código modificado um menu de atalho, que a modificação estava em vigor para todos os livros. Por exemplo, se você adicionou um novo item para a direita celular; menu do botão, o novo item que aparecem quando você direita; clicado uma célula em qualquer pasta de trabalho (além de outras pastas de trabalho que você abrir mais tarde). Em outras palavras, as modificações-menu de atalho foram feitas no aplicação nível.

Excel 2013 e Excel 2016 usam uma interface de documento único, e que afeta os menus de atalho. As alterações que fizer aos menus de atalho afetam somente a janela de pasta de trabalho ativa. Quando você executar o código que modifica o menu de atalho, o menu de atalho para outros fins que a janela ativa janelas não será alterado. Esta é uma mudança radical de como as coisas costumavam trabalhar.

Outra reviravolta: Se o usuário abre uma pasta de trabalho (ou cria uma nova pasta de trabalho) quando a janela ativa exibe o menu de atalho modificado, o novo livro também exibe o menu de atalho modificado. Em outras palavras, novas janelas exibir os mesmos menus de atalho como a janela que estava ativa quando as novas janelas foram abertas.

Bottom line: No passado, se você abriu uma pasta de trabalho ou suplemento que os menus de atalho modificados, você pode estar certo de que os menus de atalho modificados estaria disponível em todas as pastas de trabalho. Você já não tem essa garantia.


Publicações relacionadas