VBA: administre menús y barras de herramientas con CommandBar

Última actualización el 17/08/2024
Tiempo de lectura: 4 minutos

Para administrar todos los comandos de menú y barra de herramientas en VBA, debe usar la colección CommandBar. A continuación se explica cómo utilizarlo.

Administrar la colección CommandBar en VBA

La colección Barras de comando de VBA representa todos los menús y barras de herramientas, cada uno de los cuales es un objeto CommandBar.

Para trabajar con una barra, puede utilizar las siguientes sintaxis:

  • Barras de comando(n) donde n representa el índice de la barra. Es difícil saber cuál es el índice de una barra específica.
  • CommandBars("nombre de la barra") donde "bar name" representa su nombre en inglés. Por ejemplo, para la barra de herramientas Formato, su nombre es Formato.

El siguiente ejemplo le permite ingresar el nombre de las barras de herramientas en su idioma en un libro de trabajo (NombreLocal) y en inglés (Nombre), así como su Índice.

Mostrar/ocultar un menú

Para mostrarlo puedes hacerlo visible, para ocultarlo puedes hacerlo invisible o inactivo.

Todas las barras mostradas reaparecen solo aquellas que se mostraron como en los siguientes 2 ejemplos

Agregar o quitar una barra

Para agregar una barra, simplemente use el método Agregar por lo tanto:

Application.CommandBars.Agregue "el nombre de su barra", [posición], [MenuBar], [Temporal]

Los parámetros entre corchetes no son obligatorios; si no se especifican, se aplica el valor predeterminado

  • La posición corresponde a la posición de la barra en Excel: msoBarLeft (izquierda), msoBarTop (arriba), msoBarRight (derecha), msoBarBottom (abajo), msoBarFloating (flotante), msoBarPopup (menú contextual)Valor predeterminado: msoBarFloating.
  • MenuBar debe ser Verdadero si desea reemplazar la barra de herramientas activa. Valor predeterminado: Falso
  • Temporal debe ser Verdadero para que la barra sea temporal, en este caso desaparece cuando se cierra Excel. Valor predeterminado: Falso

Para no eliminar una barra de herramientas predefinida, debe verificar si la barra de herramientas es una barra de herramientas personalizada o predefinida; la propiedad incorporada es False en el caso de una barra de herramientas personalizada.

El siguiente ejemplo elimina todas las barras personalizadas que creó en Excel:

Agregar/eliminar un control

Para agregar un control, primero debes consultar todos los controles en la barra (incluso si está vacía), luego agregar:

Los parámetros entre corchetes no son obligatorios; si no se especifican, se aplica el valor predeterminado

  • Tipo especifica el tipo de control: msoControlButton (botón), msoControlEdit (cuadro de texto), msoControlDropdown (cuadro de lista desplegable), msoControlComboBox (cuadro combinado) o msoControlPopup (submenú). Valor predeterminado: msoControlButton
  • Id es un número entero que representa un control predefinido. Cada botón de las barras de herramientas predefinidas tiene su propia ID. Por defecto, es un botón vacío.
  • Parámetro, puedes almacenar los datos que quieras en este parámetro (para poder volver a leerlos más tarde).
  • Antes de la posición del nuevo control, luego se colocará delante del control cuya posición sea el número indicado. Predeterminado: al final de la barra de comandos
  • Temporal debe ser Verdadero para que el control sea temporal, en cuyo caso desaparece cuando se cierra Excel. Valor predeterminado: Falso.

Ejemplo de creación de una barra de herramientas y adición de los botones de cortar, copiar y pegar:

Para eliminar un control

Un cuadro de texto

Para iniciar un procedimiento que requiere una indicación, se puede utilizar un cuadro de texto como en el siguiente ejemplo, la macro "Ma_macro" se inicia tan pronto como el usuario presiona la tecla Entrada después de escribir tu texto:

Un cuadro combinado

Le das una opción al usuario, tan pronto como selecciona una de ellas, se lanza el procedimiento adjunto (aquí Ma_macro).

Artículos relacionados

2 Comentarios

  1. Caballero
    04/05/2024 a las 08:39

    ¡Hola
    muy buen tutorial
    Estoy intentando crear una barra de menú personalizada.
    aquí está el código
    Dim MaBarre como CommandBar
    Dim NouvBtn como CommandBarButton
    'agregar una barra de herramientas
    Establecer MyBar = CommandBars.Add("CustomBar")
    'agrega el botón de cortar a la barra
    Establecer NewBtn = MyBar.Controls.Add(msoControlButton, CommandBars("Standard").Controls("Cut").ID)
    'agrega el botón de cortar a la barra
    Establecer NewBtn = MyBar.Controls.Add(msoControlButton, Application.CommandBars("Standard").Controls("Copia").ID)
    'agrega el botón pegar a la barra
    Establecer NouvBtn = MyBar.Controls.Add(msoControlButton, Application.CommandBars("Standard").Controls("Paste").ID)
    'muestra la barra
    MiBar.Visible = Verdadero

    no se muestra nada
    puede ayudarme
    Pierre

    Responder

  2. LECORNEC
    13/12/2022 a las 19:11

    Hola,
    Muchas gracias por esta herramienta tan útil.
    Sin embargo, ¿puedo preguntar si es posible cambiar la fuente de un msoControlButton?
    Le agradezco de antemano su respuesta
    meilleures saludos

    Responder

Dejar un comentario

Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *

Este sitio usa Akismet para reducir los no deseados. Obtenga más información sobre cómo se procesan sus datos de comentarios.

Jugador Más Valioso de Microsoft 2024

Boletín informativo

1 vez al mes:
Consejos y cuestionarios

    No te enviaremos spam. Puedes darte de baja en cualquier momento.

    VBA: administre menús y barras de herramientas con CommandBar

    Tiempo de leer: 4 minutos
    Última actualización el 17/08/2024

    Para administrar todos los comandos de menú y barra de herramientas en VBA, debe usar la colección CommandBar. A continuación se explica cómo utilizarlo.

    Administrar la colección CommandBar en VBA

    La colección Barras de comando de VBA representa todos los menús y barras de herramientas, cada uno de los cuales es un objeto CommandBar.

    Para trabajar con una barra, puede utilizar las siguientes sintaxis:

    • Barras de comando(n) donde n representa el índice de la barra. Es difícil saber cuál es el índice de una barra específica.
    • CommandBars("nombre de la barra") donde "bar name" representa su nombre en inglés. Por ejemplo, para la barra de herramientas Formato, su nombre es Formato.

    El siguiente ejemplo le permite ingresar el nombre de las barras de herramientas en su idioma en un libro de trabajo (NombreLocal) y en inglés (Nombre), así como su Índice.

    Mostrar/ocultar un menú

    Para mostrarlo puedes hacerlo visible, para ocultarlo puedes hacerlo invisible o inactivo.

    Todas las barras mostradas reaparecen solo aquellas que se mostraron como en los siguientes 2 ejemplos

    Agregar o quitar una barra

    Para agregar una barra, simplemente use el método Agregar por lo tanto:

    Application.CommandBars.Agregue "el nombre de su barra", [posición], [MenuBar], [Temporal]

    Los parámetros entre corchetes no son obligatorios; si no se especifican, se aplica el valor predeterminado

    • La posición corresponde a la posición de la barra en Excel: msoBarLeft (izquierda), msoBarTop (arriba), msoBarRight (derecha), msoBarBottom (abajo), msoBarFloating (flotante), msoBarPopup (menú contextual)Valor predeterminado: msoBarFloating.
    • MenuBar debe ser Verdadero si desea reemplazar la barra de herramientas activa. Valor predeterminado: Falso
    • Temporal debe ser Verdadero para que la barra sea temporal, en este caso desaparece cuando se cierra Excel. Valor predeterminado: Falso

    Para no eliminar una barra de herramientas predefinida, debe verificar si la barra de herramientas es una barra de herramientas personalizada o predefinida; la propiedad incorporada es False en el caso de una barra de herramientas personalizada.

    El siguiente ejemplo elimina todas las barras personalizadas que creó en Excel:

    Agregar/eliminar un control

    Para agregar un control, primero debes consultar todos los controles en la barra (incluso si está vacía), luego agregar:

    Los parámetros entre corchetes no son obligatorios; si no se especifican, se aplica el valor predeterminado

    • Tipo especifica el tipo de control: msoControlButton (botón), msoControlEdit (cuadro de texto), msoControlDropdown (cuadro de lista desplegable), msoControlComboBox (cuadro combinado) o msoControlPopup (submenú). Valor predeterminado: msoControlButton
    • Id es un número entero que representa un control predefinido. Cada botón de las barras de herramientas predefinidas tiene su propia ID. Por defecto, es un botón vacío.
    • Parámetro, puedes almacenar los datos que quieras en este parámetro (para poder volver a leerlos más tarde).
    • Antes de la posición del nuevo control, luego se colocará delante del control cuya posición sea el número indicado. Predeterminado: al final de la barra de comandos
    • Temporal debe ser Verdadero para que el control sea temporal, en cuyo caso desaparece cuando se cierra Excel. Valor predeterminado: Falso.

    Ejemplo de creación de una barra de herramientas y adición de los botones de cortar, copiar y pegar:

    Para eliminar un control

    Un cuadro de texto

    Para iniciar un procedimiento que requiere una indicación, se puede utilizar un cuadro de texto como en el siguiente ejemplo, la macro "Ma_macro" se inicia tan pronto como el usuario presiona la tecla Entrada después de escribir tu texto:

    Un cuadro combinado

    Le das una opción al usuario, tan pronto como selecciona una de ellas, se lanza el procedimiento adjunto (aquí Ma_macro).

    Artículos relacionados

    Boletín informativo

    1 vez al mes:
    Consejos y cuestionarios

      No te enviaremos spam. Puedes darte de baja en cualquier momento.

      2 Comentarios

      1. Caballero
        04/05/2024 a las 08:39

        ¡Hola
        muy buen tutorial
        Estoy intentando crear una barra de menú personalizada.
        aquí está el código
        Dim MaBarre como CommandBar
        Dim NouvBtn como CommandBarButton
        'agregar una barra de herramientas
        Establecer MyBar = CommandBars.Add("CustomBar")
        'agrega el botón de cortar a la barra
        Establecer NewBtn = MyBar.Controls.Add(msoControlButton, CommandBars("Standard").Controls("Cut").ID)
        'agrega el botón de cortar a la barra
        Establecer NewBtn = MyBar.Controls.Add(msoControlButton, Application.CommandBars("Standard").Controls("Copia").ID)
        'agrega el botón pegar a la barra
        Establecer NouvBtn = MyBar.Controls.Add(msoControlButton, Application.CommandBars("Standard").Controls("Paste").ID)
        'muestra la barra
        MiBar.Visible = Verdadero

        no se muestra nada
        puede ayudarme
        Pierre

        Responder

      2. LECORNEC
        13/12/2022 a las 19:11

        Hola,
        Muchas gracias por esta herramienta tan útil.
        Sin embargo, ¿puedo preguntar si es posible cambiar la fuente de un msoControlButton?
        Le agradezco de antemano su respuesta
        meilleures saludos

        Responder

      Dejar un comentario

      Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *

      Este sitio usa Akismet para reducir los no deseados. Obtenga más información sobre cómo se procesan sus datos de comentarios.