Cómo asignar una macro a un botón o una forma
Repasando algunos tutoriales de Ayuda Excel, me topé con este (5 formas de ejecutar procedimientos Sub) en el que te mostré algunas formas de ejecutar una macro guardada en un módulo:
- Desde otro procedimiento.
- Desde el editor de VBA.
- Desde la ventana de Excel.
- Con un atajo de teclado.
- Desde controles de formulario y objetos.
Mi favorita de todas ellas, que además es la más rápida es la última. En este tutorial te mostraré un par de métodos para insertar una forma y un botón en Excel para, a continuación, asignarles una macro. Al finalizar, el libro estará listo para que hagas clic sobre el botón o la forma y se ejecute la macro. Para hacer las pruebas he creado un sencillo procedimiento que contiene dos acciones:
- Escribe el texto ‘Ayuda Excel’ en la celda C3 de la hoja activa
- Cambia el fondo de la celda a verde.
Sub AyudaExcel()
With ActiveSheet.Range("C3")
.Value = "Ayuda Excel"
.Interior.Color = vbGreen
End With
End Sub
El código anterior lo he ubicado en un módulo estándar en el editor de VBA.
Insertar una forma y asignarle una macro
En una hoja de Excel se pueden insertar botones de formulario (lo que realmente se conoce como botón). Personalmente me gustan más las formas para ejecutar macros en Excel. El motivo es porque pueden adoptar muy diferentes formatos (colores de fondo, bordes, colores de fuente) y se adaptan perfectamente al tema y al estilo de la hoja. Puedes insertar fácilmente una forma y hacer que parezca un botón.
¿Cómo insertar una forma?
- Dirígete a la ficha Insertar y haz clic en el botón Formas del grupo Ilustraciones.
- Haz clic en la opción Rectángulo (si lo deseas puedes seleccionar cualquier otra).
- Haz clic en la parte de la hoja donde quieras insertar el rectángulo seleccionado.
- Cambia el tamaño para adaptarlo al espacio que tengas disponible en la hoja.
Una vez insertada la forma (te recuerdo que puedes seleccionar cualquier tipo de forma de la galería), es hora de asignar la macro.
- Haz clic con el botón derecho del ratón sobre la forma.
- En el menú contextual haz clic en ‘Asignar macro’. Esto abrirá el cuadro de diálogo Asignar macro.
- En el cuadro de diálogo se muestra la lista de todas las macros del libro. Haz clic en la macro AyudaExcel para asignársela a la forma.
- Haz clic en el botón Aceptar.
¡Eso es todo!
A partir de ahora si pasas el puntero del ratón por encima de la forma, se mostrará el icono de la siguiente imagen, lo cual indica que ahora la forma es ‘clicable’.
Ya puedes hacer clic en la forma para ejecutar la macro.
La macro funciona correctamente pero es necesario escribir un texto en la forma para ayudar a otras personas a utilizarla. Puedes escribir por ejemplo ‘Haz clic aquí para ejecutar la macro’. Para eso haz clic en la forma con el botón derecho del ratón y selecciona la opción Editar texto. A continuación, escribe el texto que desees.
Ten en cuenta que no podrás hacer clic para ejecutar la macro cuando la forma esté seleccionada (es decir, cuando muestre un borde alrededor). Para hacerla funcional de nuevo presiona la tecla Esc o haz clic en cualquier otro lugar de la hoja.
Importante: Una vez que has asignado la macro a la forma, no podrás seleccionarla con el botón izquierdo del ratón (porque se ha convertido en ‘clicable’. En este caso, presiona la tecla Ctrl antes de hacer clic en la forma.
Cómo mantener la forma al ocultar las filas o columnas
Algo que pocos usuarios saben es que cuando se insertar una forma, ésta se sitúa encima de las celda (igual que un gráfico u otro objeto). Esto tiene el inconveniente de que cuando se cambian de tamaño las filas o columnas que hay por debajo de la forma, la forma también lo hace.
Observa qué ocurre cuando oculto las columnas D y E.
Para evitarlo, sigue estos pasos.
- Haz clic con el botón derecho del ratón en la forma.
- Selecciona la opción Formato de forma.
- En el panel que se despliega a la derecha (o en el cuadro de diálogo en caso de que uses Excel 2010 o anterior), selecciona el botón Tamaño y propiedades y, en la sección Propiedades selecciona la opción No mover ni cambiar tamaño con celdas.
Insertar un botón de formulario y asignarle una macro
En caso de no preocuparte por el formato del botón o te gustan los controles grises de los botones normales, puedes insertar un botón de formulario (o un botón ActiveX) y luego asignarle una macro.
En primer lugar necesitas tener activa la ficha Programador (Desarrollador) en tu cinta de opciones. En caso de no tenerla visible, te enseño a mostrarla en la Megaguía de Macros y VBA (descarga gratuita).
Una vez esté visible la ficha Programador, sigue estos pasos para insertar un botón y asignarle la macro:
- Haz clic en la ficha Programador.
- En el grupo Controles haz clic en el botón Insertar y, a continuación en el botón de formulario que se indica en la siguiente imagen:
- Haz clic en cualquier lugar de la hoja. Esto insertará el botón en el lugar donde hagas clic y abrirá automáticamente el cuadro de diálogo Asignar macro.
- En el cuadro se muestra la lista de macros que existen en el libro activo. Haz clic en el nombre de la macro que quieres asignar al botón. En este caso es ‘AyudaExcel‘.
Estos pasos insertarán un botón con la macro que selecciones en el cuadro.
Por defecto se trata de un botón pequeño y gris con el texto ‘Botón’. Puedes modificar tanto el texto como el tamaño siguiendo los mismos pasos de la forma.
Una de las desventajas de usar este tipo de botones es que no tienes mucho control sobre el formato. Por ejemplo, no es posible cambiar el color gris del fondo. Si quieres echar un vistazo a las opciones que podrías modificar, haz clic con el botón derecho del ratón encima del botón y selecciona Formato de control.
Una cosa buena de este tipo de botones es que no se oculta ni cambia de tamaño cuando se ocultan o eliminan las filas o columnas que se encuentran debajo. Sin embargo, sí se moverá en caso de que cambies la altura de la fila o la anchura de la columna.
Si quieres evitar esto, en la pestaña Propiedades del cuadro Formato de control, tienes una opción similar a la que sirve para las formas.
Insertar un botón ActiveX y asignarle una macro
Además de los botones de formulario, Excel cuenta también con un botón ActiveX al que puedes asignar la macro.
En la mayoría de los casos, no vas a necesitar usar el control ActiveX, y te recomiendo que lo uses únicamente cuando entiendas completamente qué son este tipo de controles y sepas lo que estás haciendo (no son compatibles con Mac y existen también problemas de compatibilidad entre versiones de Excel de 32 y 64 bits).
Si quieres conocer la diferencia entre los controles de formulario de Excel y los controles ActiveX te recomiendo que eches un vistazo a la documentación de Microsoft.
Los botones ActiveX se insertan desde el mismo lugar que los de formulario, aunque, en este caso, al dibujarlo, no aparece el cuadro Asignar Macro. Para asignarle una macro debes hacer clic con el botón derecho del ratón encima del botón y seleccionar la opción Ver código. Cuando se muestre el editor de VBA debes pegar el código de la macro en la ventana código.
Resumen
Como has comprobado la manera mas rápida de ejecutar una macro es crear una forma o botón y asignarle una macro. En mi opinión las formas son mucho más flexibles en cuanto a las diferentes apariencias y colores que pueden adoptar, pero son algo menos intuitivas que los clásicos botones grises. La ventaja de usar formas y botones de formulario para ejecutar tus macros es que son compatibles con todo tipo de versiones de Excel (incluso con Mac) pero solo atienden a los eventos ‘Click
’. Si deseas más flexibilidad de programación tendrás que utilizar controles ActiveX.