Ejecutar macro desde un Botón, un Control o una Forma en Excel vba

image

He generado una macro la cual deseamos poder ejecutarla desde un Botón (control ActiveX), desde un Botón de formulario (para hojas de cálculo) o incluso desde una Forma, ya sea imagen, cuadrado, círculo, etc. La macro será la  misma, pero la manera en la que podremos asignarla a cada Control será diferente.

Ejecutar macro desde un Botón, un Control o una Forma en Excel vba

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Estando en Excel presionamos la combinación de teclas [Alt] + [F11] para abrir el IDE de Visual Basic para aplicaciones (vba). En la Figura 1 vemos el proceso de abrir el IDE y escribir la macro.

Abir IDE de vba en Excel

Figura 1. Abrir IDE de vba de Excel.

Código de la macro

'---------------------------------------------------------------------------------------
' Module    : Módulo1
' Author    : MVP Excel, Sergio Alejandro Campos
' Date      : 17/12/2015
' Website   : https://www.exceleinfo.com
' Youtube   : https://www.youtube.com/user/sergioacamposh
'---------------------------------------------------------------------------------------
'
'Ejecutar macro en la Hola activa
Sub Prueba1()

    Dim i As Integer

    Range("A1").Activate

    For i = 1 To 12

        ActiveCell.Offset(i, 0).Value = DateValue("01/" & i & "/2015")
        ActiveCell.Offset(i, 1).Value = DateValue("01/" & i & "/2015")

    Next i

    Range("A2:A13").NumberFormat = ("m")
    Range("B2:B13").NumberFormat = ("mmmm")

End Sub
'
'
'Ejecutar macro desde otra hoja
Sub Prueba2()

    Dim i As Integer

    Sheets("Hoja2").Activate
    Range("A1").Activate

    For i = 1 To 12

        ActiveCell.Offset(i, 0).Value = DateValue("01/" & i & "/2015")
        ActiveCell.Offset(i, 1).Value = DateValue("01/" & i & "/2015")

    Next i

    Range("A2:A13").NumberFormat = ("m")
    Range("B2:B13").NumberFormat = ("mmmm")

    Sheets("Hoja1").Select

End Sub

Asignar macro a Botón (control ActiveX)

Dentro de la pestaña Desarrollador elegimos el botón Insertar > Controles ActiveX. Al elegirlo lo dibujamos en pantalla y después le damos doble Clic. Veremos que se abre el IDE de vba donde le podremos escribir una macro al evento Click del Botón. En el código que escribiremos mandamos llamar a la macro que creamos en la Figura 1 llamada Prueba1.

Llamar macro de Excel desde otra macro

Figura 2. Llamar macro de Excel desde otra macro.

Código de la macro

CODIGO EVENTO CLICK

Asignar macro a Botón (Control de Formulario)

A diferencia de los Controles ActiveX, los Controles de Formulario nos pueden server para llamar a otra macro de Excel, y con la salvedad de que no pueden ser insertados en Formularios ni manejar Eventos.

Más información en:  Introducción a formularios, controles de formulario y controles ActiveX en una hoja de cálculo.

Para esto igual nos vamos a la pestaña Desarrollador y elegimos Insertar > Controles de Formulario. Al darle Clic y dibujar el Control en la hoja lo primero que nos pedirá es asignarle una Macro. Le asignamos Prueba1 y damos Aceptar.

Asignar macro a Control de formulario

Figura 3. Asignar macro a Control de formulario.

Asignar macro a Forma (círculos, cuadrados, imágenes)

Por último veremos cómo asignar una macro a una forma o imagen. Nos dirigimos a la pestaña Insertar > Ilustraciones > Formas. Elegimos la forma de nuestra preferencia y la dibujamos en la hoja de cálculo. Después de insertarla en la hoja le damos clic derecho y elegimos Asignar macro. Elegimos la macro Prueba1.

Asignar macro a forma de Excel

Figura 4. Asignar macro a forma.

Video tutorial

Ver video en YouTube: https://www.youtube.com/watch?v=wE5rrtpK7X4

Anexos

:: Descargar Asignar macros a Botones.rar

You may also like...