Cómo personalizar excel 2016 menús de acceso directo en vba

Video: Tuto Excel + VBA (Básico) Navegación con botones y mensaje bienvenida

Antes de Excel 2007, los programadores de VBA utilizan el objeto CommandBar para crear menús personalizados, barras de herramientas personalizadas y acceso directo personalizado (derecha; haga clic en los menús). Empezando con Excel 2007, el objeto CommandBar está en una posición bastante extraño. Si se escribe código para personalizar un menú o una barra de herramientas, intercepta Excel que codifican e ignora muchas de sus comandos.

En lugar de mostrar su mejora interfaz bien pensada, Excel 2007 (al igual que las versiones posteriores) simplemente vuelca sus menús y barras de herramientas personalizadas en un cajón de sastre de la cinta pestaña denominada Complementos.

Menú y la barra de herramientas personalizaciones terminan en los comandos de menú complementos → o el grupo de complementos → Personal barras de herramientas. Pero la personalización de menús de acceso directo (que también utiliza el objeto CommandBar) sigue funcionando como siempre lo ha hecho - bueno, algo así.

¿Línea de fondo? El objeto CommandBar no es muy útil ya, pero sigue siendo la única manera de personalizar los menús de acceso directo.

La adición de un nuevo elemento al menú contextual de celda

A continuación, encontrará ejemplos de código que añade un nuevo elemento al menú contextual que aparece al hacer; clic en una celda. Usted debe ser capaz de adaptar estos ejemplos para sus necesidades.

Puede mejorar que la utilidad Cambiar mayúsculas y minúsculas un poco haciendo que esté disponible en el menú contextual de celda.

El procedimiento AddToShortcut añade un nuevo elemento de menú al menú contextual de celda. Se puede adaptar para que apunte a sus propias macros cambiando las propiedades Caption y OnAction del objeto nombrado NewControl.

Sub AddToShortCut () Dim Bar Como CommandBarDim NewControl Como CommandBarButtonDeleteFromShortcutSet Barra = Application.CommandBars ( “Cell”) Establecer NewControl = _ Bar.Controls.Add (Tipo: = msoControlButton, ID: = 1, _temporary: = True) Con NewControl.Caption = “&Cambiar mayúsculas y minúsculas”.OnAction =‘ChangeCase’.Style = msoButtonIconAndCaptionEnd conend Sub

Al modificar un menú contextual, que la modificación permanece en efecto hasta que reinicie Excel. En otras palabras, menús de acceso directo modificados no restablecen a sí mismos cuando se cierra el libro que contiene el código VBA. Por lo tanto, si se escribe código para modificar un menú contextual, casi siempre se escribe código para neutralizar el efecto de la modificación.

El procedimiento DeleteFromShortcut elimina el nuevo elemento de menú en el menú contextual de celda:

DeleteFromShortcut sub () En NextApplication.CommandBars Error Resume ( “Cell”). Controles _ ( “&Cambiar mayúsculas y minúsculas”). DeleteEnd Sub

Esto muestra cómo el nuevo elemento de menú aparece después de que la derecha; clic en una celda.

El menú contextual de celda que muestra un elemento de menú personalizado: Cambiar mayúsculas y minúsculas.

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

El menú contextual de celda que muestra un elemento de menú personalizado: Cambiar mayúsculas y minúsculas.

El primer comando real después de la declaración de un par de variables llama al procedimiento DeleteFromShortcut. Esta declaración asegura que sólo un elemento de menú Cambiar mayúsculas y minúsculas aparece en el menú contextual de celda. Intente comentar esa línea (poner un apóstrofe en el inicio de la línea) y ejecutar el procedimiento un par de veces - pero no se deje llevar!

derecha, haga clic en una celda, y se puede ver varias instancias de la opción de menú Cambiar mayúsculas y minúsculas. Deshacerse de todas las entradas mediante la ejecución de DeleteFromShortcut varias veces (una vez para cada elemento de menú adicional).

Por último, se necesita una manera de añadir el elemento de menú contextual cuando se abre el libro y para eliminar el elemento de menú cuando se cierra el libro. Hacer esto es fácil. Sólo tiene que añadir estos dos procedimientos de evento al módulo de código ThisWorkbook:

Private Sub Workbook_Open () llamada AddToShortCutEnd SubPrivate Sub Workbook_BeforeClose (Cancel As Boolean) Llame DeleteFromShortcutEnd Sub

El procedimiento Workbook_Open se ejecuta cuando se abre el libro, y se ejecuta el procedimiento Workbook_BeforeClose antes de que el libro está cerrado. Justo lo que recetó el doctor.

Lo que es diferente en Excel 2013 y Excel 2016?

Si ha utilizado VBA para trabajar con menús de acceso directo en Excel 2007 o anterior, es necesario tener en cuenta de un cambio significativo.

Video: Cómo personalizar formularios de Excel - Titulos y Fondos de un Formulario (UserForm)

En el pasado, si su código modificado un menú contextual, que la modificación estaba en efecto para todos los libros. Por ejemplo, si se ha añadido un nuevo elemento a la derecha de la célula; menú de clic, que aparecería nuevo elemento al hacer; hizo clic en una celda alguna cuaderno de trabajo (además de otros libros que se abren más adelante). En otras palabras, las modificaciones menú contextual, se hicieron en la solicitud nivel.

Excel 2013 y Excel 2016 utilizan una única interfaz de documentos, y que afecta a los menús contextuales. Los cambios que realice en menús contextuales afectan sólo a la ventana del libro activo. Cuando se ejecuta el código que modifica el menú contextual, no se cambiará el menú contextual para las ventanas distintas de la ventana activa. Este es un cambio radical de cómo las cosas que se utilizan para trabajar.

Otro giro: Si el usuario abre un libro (o crea un nuevo libro) cuando la ventana activa muestra el menú contextual modificado, el nuevo libro también muestra el menú de acceso directo modificado. En otras palabras, nuevas ventanas muestran los mismos menús contextuales como la ventana que estaba activo cuando se abrieron las nuevas ventanas.

En pocas palabras: En el pasado, si ha abierto un libro o un complemento que los menús de acceso directo modificados, se podía estar seguro de que los menús de acceso directo modificados estarían disponibles en todos los libros. Ya no tiene esa seguridad.

Artículos Relacionados