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.

image

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.

image

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

You may also like...

5 Responses

  1. Eduardo says:

    Excelente como siempre. Gracias

  2. Eduardo says:

    Excelente como siempre. Gracias

  3. Contabilidad Externa says:

    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.

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: