viernes, 6 de enero de 2012

Crear un menú contextual

Con Excel VBA podemos crear nuestro propio menú contextual y hacer que aparezcan como respuesta a un evento determinado. El código que presento a continuación  crea un sencillo menú con tres  elementos.

Sub CrearMenu()
    Set myBar = CommandBars.Add _
      (Name:="MyMenu", Position:=msoBarPopup, _
       Temporary:=True)
    Set myItem = myBar.Controls.Add(Type:=msoControlButton)
    With myItem
        .Caption = "&Formato Numero..."
        .OnAction = "ShowFormatNumber"
        .FaceId = 1554
    End With
       
    Set myItem = myBar.Controls.Add(Type:=msoControlButton)
    With myItem
        .Caption = "&Alineacion..."
        .OnAction = "ShowFormatAlignment"
        .FaceId = 217
    End With

    Set myItem = myBar.Controls.Add(Type:=msoControlButton)
    With myItem
        .Caption = "&Fuente..."
        .OnAction = "ShowFormatFont"
        .FaceId = 291
    End With
End Sub

CommandBars  representa la barra de menús y todas las barras de herramientas de Microsoft Office.
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ú.

La función FaceId  establece el número de Id. de la imagen de un control de nuestro menú.

Después de crear nuestro menú contextual, podemos mostrarlo mediante el método ShowPopup.

El siguiente procedimiento localizado en el modulo de código de un objeto Worksheet, se ejecuta cuando hacemos clic con el botón derecho en una celda.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
CommandBars("MyMenu").ShowPopup
End Sub

Nos quedaría como la siguiente imagen:



No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.