Ejecutar macro desde un Botón, un Control o una Forma en Excel vba
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.
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.
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.
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.
Figura 4. Asignar macro a forma.
Video tutorial
Ver video en YouTube: https://www.youtube.com/watch?v=wE5rrtpK7X4