Cómo ejecutar cualquier macro desde un botón (macro mágico)

Índice
  1. Ejemplo
  2. El código macro mágico
  3. Crea la forma
  4. Asigna la forma a la macro mágica.
  5. Pruébelo: cualquier macro con un solo botón
  6. ¿Cómo funciona esto?
  7. Conclusión

Normalmente, creamos interfaces de usuario para que un botón ejecute una macro. ¿Pero qué pasa si queremos que el usuario seleccione qué macro ejecutar? ¿Cómo podemos manejar ese escenario? Bueno, eso es lo que estamos viendo en esta publicación, cómo ejecutar cualquier macro con un solo botón. Sí, me escuchaste. Un botón puede contener todas las macros del libro.

Tabla de contenido
  • Ejemplo
  • El código macro mágico
  • Crea la forma
  • Asigna la forma a la macro mágica.
  • Pruébelo: cualquier macro con un solo botón
  • ¿Cómo funciona esto?
  • Conclusión

Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.

Nombre de archivo: 0138 Cualquier macro de button.zip

Tener acceso

Ejemplo

Para esta publicación, estamos trabajando con el siguiente ejemplo.

El libro contiene 4 macros.

  • toggleGridlines : activa y desactiva las líneas de cuadrícula
  • createSheet : crea una nueva hoja de trabajo
  • colorCell : cambia el color de la celda del rango seleccionado
  • messageBox : muestra un cuadro de mensaje

Lo que hagan esas macros es irrelevante, ya que utilizará las técnicas en sus macros. Pero necesito algo para demostrar la técnica. Entonces, para completar, aquí están los códigos en el archivo de ejemplo.

Private Sub toggleGridlines()ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlinesEnd Sub
Private Sub createSheet()Sheets.Add after:=ActiveSheetEnd Sub
Private Sub colorCell()ActiveCell.Interior.Color = RGB(22, 82, 46)End Sub
Private Sub messageBox()MsgBox myMessageEnd Sub

En nuestro ejemplo, queremos que el usuario seleccione la macro para ejecutar desde una lista de validación de datos.

Libro de trabajo de ejemplo

La celda C2 contiene una lista de validación de datos, que se completa según la celda E6:E9 .

La celda F2 contiene la siguiente fórmula de búsqueda para devolver el nombre de macro correspondiente de las celdas F6:F9 .

=INDEX(F6:F9,MATCH(C2,E6:E9,0))

Entonces, cuando un usuario selecciona un valor en la celda C2 , la celda F2 cambia para mostrar el nombre de la macro correspondiente.

El código macro mágico

Ahora que está configurado, necesitamos agregar otra macro al libro de trabajo. Esta es la macro que hace todo el trabajo. No parece gran cosa, pero es mágico.

Sub magicMacro()Dim shapeName As StringDim macroName As StringDim cellRef As String'Get the name of the clicked shapeshapeName = Application.Caller'Extract the name of the cell referencecellRef = Right(shapeName, Len(shapeName) - InStr(shapeName, ":"))'Get the macro namemacroName = ActiveSheet.Range(cellRef).Value'Run the recipe sheetApplication.Run "'"  ThisWorkbook.Name  "'!"  macroNameEnd Sub

Crea la forma

Ahora necesitamos crear una forma que actúe como botón. Inserta cualquier forma que quieras, con cualquier estilo. He usado un ícono de robot.

Seleccione la forma, luego en el cuadro Nombre ingrese Rango:F2 , presione Entrar para confirmar el nombre.

F2 es la celda que contiene el nombre de la macro.

Esto puede parecer aleatorio, pero créame en este caso.

Cree la forma y cámbiele el nombre: ejecute cualquier macro con un solo botón

Asigna la forma a la macro mágica.

Aquí es donde todo se junta.

Haga clic derecho en la forma y seleccione Asignar macro… en el menú.

En el cuadro de diálogo Asignar macro , seleccione magicMacro y luego haga clic en Aceptar .

Asignar la macro

Pruébelo: cualquier macro con un solo botón

Seleccione algo de la lista desplegable y luego haga clic en el botón. ¡Ta-dah! La macro seleccionada se ejecuta.

Cambie el valor en la lista desplegable y haga clic en el botón nuevamente. ¡Ta-dah… otra vez! ¡Es como magia!

Si agregamos más macros al libro de trabajo, solo necesitamos agregarlas a la lista de validación de datos y a las celdas de fórmula de búsqueda.

¿Cómo funciona esto?

Quizás te preguntes cómo funciona esto.

  • Cuando hacemos clic en la forma para ejecutar magicMacro, el código Application.Caller nos da el nombre de la forma en la que hicimos clic. Devuelve Rango:F2 como texto
  • Del texto Rango: F2, extraemos los caracteres después de los dos puntos. Devuelve F2
  • El valor de la celda de F2 nos da el nombre de la macro (toggleGridlines, createSheet, etc.)
  • Finalmente usamos Application.Run para ejecutar la macro elegida.

¿Quieres saber más sobre el método Application.Run? Haga clic aquí .

Conclusión

En esta publicación, hemos visto cómo ejecutar cualquier macro desde un botón. Funciona incluso si las macros son privadas. Espero que puedas usar esto para crear algunas interfaces simples y agradables para tus hojas de cálculo.

Artículos Relacionados:

  • Cómo ejecutar una macro desde una macro (desde otro libro)
  • Ejecutar automáticamente una macro al abrir un libro
  • Subs privados vs públicos, funciones variables en VBA

Deja una respuesta

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

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...