Lanzar tu propio menú contextual al dar click derecho en las etiquetas de hojas de Excel
Les comparto una macro que nos permitirá añadir opciones al menú contextual que por default sale cuando damos click derecho en alguna etiqueta de alguna hoja.
Figura 1. Menú contextual al dar click derecho en una etiqueta de hoja.
La macro deberá ejecutarse al momento de abrir el archivo o complemento. Ya vimos en Funciones personalizadas UDF en Excel disponibles en todos los archivos abiertos cómo tener macros disponibles para todos los archivos.
Opciones añadidas
Al momento de abrir el archivo se añadirán 5 opciones al menú, las cuales llamarán a 5 macros de ejemplo.
Figura 2. Lanzar macros desde menú de click derecho.
Macros
Al iniciar el archivo lanzamos la macro para crear el menú y al cerrarlo ejecutamos la macro para eliminarlo.
Ubicación: Objetos ThisWorkbook.
Private Sub Workbook_Open() ' Call AddMenuSheetTab ' End Sub ' Private Sub Workbook_BeforeClose(Cancel As Boolean) ' Call DeleteMenuSheetTab ' End Sub
Código de la macro para crear el menú.
Ubicación: Módulo1.
'--------------------------------------------------------------------------------------- ' Module : Módulo1 ' Author : MVP Excel, Sergio Alejandro Campos ' Date : 19/11/2014 ' Purpose : Añadir opciones a menú de click derecho ' Web : http://www.exceleinfo.com '--------------------------------------------------------------------------------------- ' 'Macro para eliminar el menú Sub DeleteMenuSheetTab() On Error Resume Next ' For i = 1 To 5 ' CommandBars("Ply").Controls("Macro" & i).Delete ' Next i ' End Sub ' 'Macro para añadir el menú Sub AddMenuSheetTab() ' Dim Bar As CommandBar Dim NewControl As CommandBarButton DeleteMenuSheetTab ' Set Bar = CommandBars("Ply") ' Set NewControl = Bar.Controls.Add _ (Type:=msoControlButton, _ temporary:=True) With NewControl .Caption = "Macro1" .OnAction = "M1" .BeginGroup = True .FaceId = 84 'E .Style = msoButtonIconAndCaption End With ' Set NewControl = Bar.Controls.Add _ (Type:=msoControlButton, _ temporary:=True) With NewControl .Caption = "Macro2" .OnAction = "M2" .BeginGroup = True .FaceId = 103 'X .Style = msoButtonIconAndCaption End With ' Set NewControl = Bar.Controls.Add _ (Type:=msoControlButton, _ temporary:=True) With NewControl .Caption = "Macro3" .OnAction = "M3" .BeginGroup = True .FaceId = 82 'C .Style = msoButtonIconAndCaption End With ' Set NewControl = Bar.Controls.Add _ (Type:=msoControlButton, _ temporary:=True) With NewControl .Caption = "Macro4" .OnAction = "M4" .BeginGroup = True .FaceId = 84 'E .Style = msoButtonIconAndCaption End With ' Set NewControl = Bar.Controls.Add _ (Type:=msoControlButton, _ temporary:=True) With NewControl .Caption = "Macro5" .OnAction = "M5" .BeginGroup = True .FaceId = 91 'L .Style = msoButtonIconAndCaption End With ' End Sub
Código de las macros de ejemplo
Ubicación: Módulo2
Sub M1() ' MsgBox "Mensaje de ejemplo al dar click en el menú", vbInformation, "EXCELeINFO" ' End Sub ' Sub M2() ' MsgBox "Mensaje de ejemplo al dar click en el menú", vbInformation, "EXCELeINFO" ' End Sub ' Sub M3() ' MsgBox "Mensaje de ejemplo al dar click en el menú", vbInformation, "EXCELeINFO" ' End Sub ' Sub M4() ' MsgBox "Mensaje de ejemplo al dar click en el menú", vbInformation, "EXCELeINFO" ' End Sub ' Sub M5() ' MsgBox "Mensaje de ejemplo al dar click en el menú", vbInformation, "EXCELeINFO" ' End Sub
Anexos
:: Descargar Menú al dar click derecho en etiquetas de hojas en Excel.rar
Excelente como siempre. Gracias
Excelente como siempre. Gracias
Hola Sergio, gusto en saludarte. quería ver si me puedes ayudar y es que estoy buscando de hacer un sub menu (como lo hiciste tu) con solo Macro1, 2, 3, 4 y Macro5 pero en vez de hacer click al botón derecho sea haciendo click en una celda.
Te pregunto porque no consigo nada en la web y lo mas parecido a lo que quiero hacer lo haz hecho tu con este archivo y otro “lanzar menú contextual al presionar un botón en Excel vba” Pero como te indique anteriormente necesito ese menu contextual al ser click en una celda especifica.
de anetemano muchas gracias por la ayuda que me puedas brindar.
Te puedes guiar en el siguiente artículo: http://www.exceleinfo.com/excel/lanzar-men-contextual-al-presionar-un-botn-en-excel-vba/
En los siguientes días preparo un ejemplo como el que comentas.
Hola Sergio muchas gracias por responder y ya había visto ese articulo y me ayudo. saludos.