Crear un menú contextual para un formulario, un control de formulario o un informeCreate a shortcut menu for a form, form control, or report

Se aplica a: Access 2013 Applies to: 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.When you are designing a form or report, you may want to provide a method for a user to easily use a command that applies only to the current context. Una manera de hacerlo es crear un menú contextual personalizado y aplicarlo a un control o informe de formulario.One way to do this is to create a custom shortcut menu and apply it to a form report, or control. El menú contextual aparece cuando el usuario selecciona el objeto al que se aplica el menú contextual.The shortcut menu appears when the user right-clicks the object to which the shortcut menu is applied.

En versiones anteriores de Access, podría usar el cuadro de diálogo Personalizar para crear menús contextuales personalizados.In earlier versions of Access, you could use the Customize dialog box to create custom shortcut menus. En Access 2013, debe usar código de Visual Basic para Aplicaciones (VBA) para crear un menú contextual.In Access 2013, you must use Visual Basic for Applications (VBA) code to create a shortcut menu. En este artículo se describe cómo crear un menú contextual con VBA.This article describes you how to create a shortcut menu using VBA.

Para crear un menú contextual, primero debe crear un objeto CommandBar.To create a shortcut menu, you first have to create a CommandBar object. El objeto CommandBar representa el menú contextual.The CommandBar object represents the shortcut menu. Luego, use el método Add para crear objetos CommandBarControl.Then, you use the Add method to create CommandBarControl objects. Cada vez que cree un objeto CommandBarControl, se agregará un comando al menú contextual.Each time that you create a CommandBarControl object, a command is added to the shortcut menu.

En el siguiente ejemplo se crea un menú contextual denominado SimpleShortcutMenu que contiene dos comandos Quitar filtro u orden y Filtrar por selección.The following example creates a shortcut menu named SimpleShortcutMenu that contains two commands, Remove Filter/Sort and Filter by Selection.

Nota

Para usar los ejemplos siguientes, debe establecer una referencia a la biblioteca de objetos de Microsoft Office 15.0.To use the following examples, you must set a reference to the Microsoft Office 15.0 Object Library. Vea Establecer referencias a bibliotecas de tipos para obtener más información sobre cómo configurar las referencias.See Set References to Type Libraries for more information about how to set references.

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.After you've run the code, the shortcut menu is saved as part of the database. No es necesario ejecutar el mismo código para recrear el menú contextual al abrir cada vez la base de datos.You don't have to run the same code to re-create the shortcut menu every time that you open the database.

Para asignar el menú contextual a un formulario, un control de formulario o un informe, establezca la propiedad Shortcut Menu del objeto a y establezca la propiedad Shortcut Menu Bar del objeto con el nombre del menú contextual.To assign the shortcut menu to a form, form control, or report, set the Shortcut Menu property of the object to Yes and set the Shortcut Menu Bar property of the object to the name of the shortcut menu. Para este ejemplo, establezca la propiedad Shortcut Menu Bar a SimpleShortcutMenu.For this example, set the Shortcut Menu Bar property to SimpleShortcutMenu.

En el siguiente ejemplo se crea un menú contextual denominado cmdFormFiltering que contiene los comandos útiles para usar en formularios continuos.The following example creates a shortcut menu named cmdFormFiltering that contains commands that are useful to use with Continuous forms. En este ejemplo, la propiedad BeginGroup se usa en varios controles para agrupar controles visualmente.In this example, the BeginGroup property is used on several controls to group controls visually.

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.The following example creates a shortcut menu named cmdReportRightClick that contains commands that are useful to use with a report. En este ejemplo se muestra cómo cambiar la propiedad Caption de cada control a medida que estos se agreguen al menú contextual.This example shows how to change the Caption property of each control as they're added to the shortcut menu.

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 colaboradoresAbout the contributors

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.Sample code provided by Edwin Blancovitch, president of Advanced Developers.net, creators of Easy Payroll, a software package to manage your human resources, payroll, scheduling, time, and attendance needs.

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? 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.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.