Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Access 2013
Al diseñar un formulario o informe, le recomendamos que proporcione un método para que un usuario pueda usar fácilmente un comando que se aplica al contexto actual. Una manera de hacerlo es crear un menú contextual personalizado y aplicarlo a un control o informe de formulario. El menú contextual aparece cuando el usuario selecciona el objeto al que se aplica el menú contextual.
En versiones anteriores de Access, podría usar el cuadro de diálogo Personalizar para crear menús contextuales personalizados. En Access 2013, debe usar código de Visual Basic para Aplicaciones (VBA) para crear un menú contextual. En este artículo se describe cómo crear un menú contextual con VBA.
Para crear un menú contextual, primero debe crear un objeto CommandBar. El objeto CommandBar representa el menú contextual. Luego, use el método Add para crear objetos CommandBarControl. Cada vez que cree un objeto CommandBarControl, se agregará un comando al menú contextual.
En el siguiente ejemplo, se crea un menú contextual llamado SimpleShortcutMenu que contiene dos comandos: Remove Filter/Sort y Filter by Selection.
Nota:
Para usar los siguientes ejemplos, debe establecer una referencia a la Biblioteca de objetos de Microsoft Office 15.0. Vea Establecer referencias a bibliotecas de tipos para obtener más información sobre cómo configurar las referencias.
Sub CreateSimpleShortcutMenu()
Dim cmbShortcutMenu As Office.CommandBar
' Create a shortcut menu named "SimpleShortcutMenu.
Set cmbShortcutMenu = CommandBars.Add("SimpleShortcutMenu", msoBarPopup, False, True)
' Add the Remove Filter/Sort command.
cmbShortcutMenu.Controls.Add Type:=msoControlButton, Id:=605
' Add the Filter By Selection command.
cmbShortcutMenu.Controls.Add Type:=msoControlButton, Id:=640
Set cmbShortcutMenu = Nothing
End Sub
Una vez que haya ejecutado el código, el menú contextual se guardará como parte de la base de datos. No es necesario ejecutar el mismo código para recrear el menú contextual al abrir cada vez la base de datos.
Para asignar el menú contextual a un formulario, un control de formulario o un informe, establezca la propiedad Shortcut Menu del objeto a Sí y establezca la propiedad Shortcut Menu Bar del objeto con el nombre del menú contextual. Para este ejemplo, establezca la propiedad Shortcut Menu Bar a SimpleShortcutMenu.
En el siguiente ejemplo se crea un menú contextual denominado cmdFormFiltering que contiene los comandos útiles para usar en formularios continuos. En este ejemplo, la propiedad BeginGroup se usa en varios controles para agrupar controles visualmente.
Sub CreateShortcutMenuWithGroups()
Dim cmbRightClick As Office.CommandBar
' Create the shortcut menu.
Set cmbRightClick = CommandBars.Add("cmdFormFiltering", msoBarPopup, False, True)
With cmbRightClick
' Add the Find command.
.Controls.Add msoControlButton, 141, , , True
' Start a new grouping and add the Sort Ascending command.
.Controls.Add(msoControlButton, 210, , , True).BeginGroup = True
' Add the Sort Descending command.
.Controls.Add msoControlButton, 211, , , True
' Start a new grouping and add the Remove Filer/Sort command.
.Controls.Add(msoControlButton, 605, , , True).BeginGroup = True
' Add the Filter by Selection command.
.Controls.Add msoControlButton, 640, , , True
' Add the Filter Excluding Selection command.
.Controls.Add msoControlButton, 3017, , , True
' Add the Between... command.
.Controls.Add msoControlButton, 10062, , , True
End With
Set cmbRightClick = Nothing
End Sub
En el siguiente ejemplo se crea un menú contextual denominado cmdReportRightClick que contiene los comandos útiles para usar en un informe. En este ejemplo, se muestra cómo cambiar la propiedad Caption de cada control a medida que se agregan los controles al menú contextual.
Sub CreateReportShortcutMenu()
Dim cmbRightClick As Office.CommandBar
Dim cmbControl As Office.CommandBarControl
' Create the shortcut menu.
Set cmbRightClick = CommandBars.Add("cmdReportRightClick", msoBarPopup, False, True)
With cmbRightClick
' Add the Print command.
Set cmbControl = .Controls.Add(msoControlButton, 2521, , , True)
' Change the caption displayed for the control.
cmbControl.Caption = "Quick Print"
' Add the Print command.
Set cmbControl = .Controls.Add(msoControlButton, 15948, , , True)
' Change the caption displayed for the control.
cmbControl.Caption = "Select Pages"
' Add the Page Setup... command.
Set cmbControl = .Controls.Add(msoControlButton, 247, , , True)
' Change the caption displayed for the control.
cmbControl.Caption = "Page Setup"
' Add the Mail Recipient (as Attachment)... command.
Set cmbControl = .Controls.Add(msoControlButton, 2188, , , True)
' Start a new group.
cmbControl.BeginGroup = True
' Change the caption displayed for the control.
cmbControl.Caption = "Email Report as an Attachment"
' Add the PDF or XPS command.
Set cmbControl = .Controls.Add(msoControlButton, 12499, , , True)
' Change the caption displayed for the control.
cmbControl.Caption = "Save as PDF/XPS"
' Add the Close command.
Set cmbControl = .Controls.Add(msoControlButton, 923, , , True)
' Start a new group.
cmbControl.BeginGroup = True
' Change the caption displayed for the control.
cmbControl.Caption = "Close Report"
End With
Set cmbControl = Nothing
Set cmbRightClick = Nothing
End Sub
Información sobre los colaboradores
El ejemplo de código lo ha proporcionado Edwin Blancovitch, presidente de Advanced Developers.net, creadores de Easy Payroll, un paquete de software que sirve para administrar las necesidades de recursos humanos, nóminas, programaciones, tiempo y asistencia.
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.