Está en la página 1de 2

Como crear un men contextual

VBA.(POPUP)
Vamos a crear nuestro propio men contextual para las hojas. Este es un ejemplo muy sencillo con
solo dos elementos utilizando lenguage VBA. El ejemplo lo puedes descargar mas abajo.

Este cdigo debe ir en la hoja en la cual queremos colocar el men con el evento despues
de apretar el segundo botn del Mouse.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Application.CommandBars(MiMenu).ShowPopup
End Sub

Con este men eliminamos el control.

Sub Borrar_POPUP()
On Error Resume Next
CommandBars(mimenu).Delete
End Sub

Crearemos el Objeto MI_POPUP como commandbar y el la variable MI_ITEM como


commandbarcontrol.

Sub CrearMenu() www.elreydelexcel.com

Dim MI_POPUP As CommandBar


Dim MI_ITEM As CommandBarControl

Call Borrar_POPUP
Se crea el objeto Popup
Set MI_POPUP = CommandBars.Add(Name:=mimenu, Position:=msoBarPopup, Temporary:=True)

MI_ITEM 1
Set MI_ITEM = MI_POPUP.Controls.Add(Type:=msoControlButton)
With MI_ITEM
.Caption = &Formato FUENTE
.OnAction = MACRO_MENSAJE
.FaceId = 1554
End With

MI_ITEM 2
Set MI_ITEM = MI_POPUP.Controls.Add(Type:=msoControlButton)
With MI_ITEM
.Caption = &Alineacion
.OnAction = MACRO_FUENTE
.FaceId = 217
End With

End Sub

La propiedad OnAction Devuelve o establece el nombre de un procedimiento de Visual Basic que


se ejecutar cuando hacemos clic al valor de un control de nuestro men y nos permite ejecutar
otras macros como las siguientes:

Caption esta propiedad nos permite escribir el texto de cada Item.

CommandBars representa la barra de mens y todas las barras de herramientas de Microsoft


Office.

Sub MACRO_FUENTE()
Selection.Font.Color = RGB(0, 0, 255)
End Sub

Sub MACRO_MENSAJE()
MsgBox INGRESAR NUEVA MACRO,WWW.ELREYDELEXCEL.COM
End Sub

La funcin FaceId establece el nmero de Id. de la imagen de un control de nuestro men.

El mtodo ShowPopup permite mostrar el menucontextual

También podría gustarte