Hoy profundizaremos en un tema que ya tocamos tiempo atrás: los menús personalizados
Puedes revisar esta lectura.
La idea es crear nuestro propio menú contextual personalizado.
Para ello, insertamos en la ventana de código de un módulo estándar el siguiente código:
Para personalizar los iconos mostrados lee la entrada siguiente.
Con el código generado el primer paso será ejecutar la macro: Crear_Menu_Contextual
Después podremos asociar un método abreviado a la macro Mostrar__MenuContextualPersonalizado (ver aquí).
El menú se hará visible donde tengamos el cursor activo.
El resultado es el esperado... al presionar nuestra combinación de teclas de acceso rápido abriremos nuestro menú contextual con las opciones definidas...
Puedes revisar esta lectura.
La idea es crear nuestro propio menú contextual personalizado.
Para ello, insertamos en la ventana de código de un módulo estándar el siguiente código:
'En primer lugar ejecutar la macro 'Crear_Men_Contextual' 'a continuación podremos lanzar la macro siguiente: Sub Mostrar__MenuContextualPersonalizado() 'Mostrar el menú creado Application.CommandBars("MiMenu").ShowPopup End Sub Sub Eliminar_MenuContextualPersonalizado() 'eliminar el menú creado Application.CommandBars("MiMenu").Delete End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Crear_Menu_Contextual() Dim miMenu As CommandBar Dim submenu As CommandBarPopup Dim opcion1 As CommandBarButton, opcion2 As CommandBarButton Dim opcion3_1 As CommandBarButton, opcion3_2 As CommandBarButton, opcion3_3 As CommandBarButton 'creamos el menú Set miMenu = Application.CommandBars.Add(Name:="MiMenu", Position:=msoBarPopup, MenuBar:=False, Temporary:=True) 'añadimos elementos al menú contextual... With miMenu 'un primer elemento Set opcion1 = .Controls.Add(Type:=msoControlButton) 'tipo botón With opcion1 .Caption = "Primer elemento" 'el texto que aparece visible .FaceId = 71 ' el icono asociado .OnAction = "Macro1" 'la acción o macro a realizar End With 'un segundo elemento Set opcion2 = .Controls.Add(Type:=msoControlButton) 'tipo botón With opcion2 .Caption = "Segundo elemento" 'el texto que aparece visible .FaceId = 72 ' el icono asociado .OnAction = "Macro2" 'la acción o macro a realizar End With 'un submenú dependiente con desplegable de opciones Set submenu = .Controls.Add(Type:=msoControlPopup) With submenu .Caption = "Submenú" 'el texto que aparece visible... 'un elemento dentro del submenú Set opcion3_1 = .Controls.Add(Type:=msoControlButton) 'tipo botón With opcion3_1 .Caption = "Punto tres-uno" 'el texto que aparece visible .FaceId = 73 ' el icono asociado .OnAction = "Macro31" 'la acción o macro a realizar End With 'otro elemento dentro del submenú Set opcion3_2 = .Controls.Add(Type:=msoControlButton) 'tipo botón With opcion3_2 .Caption = "Punto tres-dos" 'el texto que aparece visible .FaceId = 74 ' el icono asociado .OnAction = "Macro32" 'la acción o macro a realizar End With 'tercer elemento dentro del submenú Set opcion3_3 = .Controls.Add(Type:=msoControlButton) 'tipo botón With opcion3_3 .Caption = "Punto tres-tres" 'el texto que aparece visible .FaceId = 75 ' el icono asociado .OnAction = "Macro33" 'la acción o macro a realizar End With End With End With End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Macro1() MsgBox "Aprendiendo Excel...." & vbCrLf & "Primera acción principal" End Sub Sub Macro2() MsgBox "Aprendiendo Excel...." & vbCrLf & "Segunda acción principal" End Sub Sub Macro31() MsgBox "Aprendiendo Excel...." & vbCrLf & "Primera acción del submenú" End Sub Sub Macro32() MsgBox "Aprendiendo Excel...." & vbCrLf & "Segunda acción del submenú" End Sub Sub Macro33() MsgBox "Aprendiendo Excel...." & vbCrLf & "Tercera acción del submenú" End Sub
Para personalizar los iconos mostrados lee la entrada siguiente.
Con el código generado el primer paso será ejecutar la macro: Crear_Menu_Contextual
Después podremos asociar un método abreviado a la macro Mostrar__MenuContextualPersonalizado (ver aquí).
El menú se hará visible donde tengamos el cursor activo.
El resultado es el esperado... al presionar nuestra combinación de teclas de acceso rápido abriremos nuestro menú contextual con las opciones definidas...
Hola,
ResponderEliminarHe probado copiando su código pero me muestra un error '5' en tiempo de ejecución: "Argumento o llamada a procedimiento no válida", en la línea 6 del procedimiento "Sub Crear_Menu_Contextual()":
Set MiMenu = Application.CommandBars.Add(Name:="MiMenu", Position:=msoBarPopup, MenuBar:=False, Temporary:=True)
Tras revisar todo el código no alcanzo a detectar donde pueda producirse este error.
Trabajo con Excel 2013 sobre el sistema Windows 10.
Les quedaré agradecido si pudieran aclararlo,
Saludos,
Hola,
Eliminarhe replicado el proceso en W10 con Office 2013 (como indicas) y no me salta ningún error...¿¿??
Revisa bien el código por si se hubiera perdido alguna cosa al copiar y pegar
Saludos