La idea es tener una lista desplegable en una celda creada con validación de datos de la cual podemos elegir tres valores. Según la elección, la macro correspondiente es accionada.
Vamos a ejemplificarlo con un modelo absolutamente inocuo, pero útil para los propósitos de la explicación. Programamos tres macros: "dia", "tarde" y "noche". Cuando accionamos la macro "dia" aparece en pantalla el mensaje "Buenos días"; cuando accionamos la macro "tarde", aparece en pantalla el mensaje "Buenas tardes". La tercer opción la dejo librada a la imaginación de mis perspicaces lectores.
En este modelo usamos los siguientes elementos:
- una lista desplegable con los nombres de las macros; la lista la creamos con validación de datos-lista
- tres macros: "dia", "tarde" y "noche"
- un evento de tipo Worksheet_Change que ponemos en el módulo de la hoja correspondiente (en nuestro caso la hoja donde está la lista deslegable)-
Los pasos:
- Creamos la lista desplegable
- Creamos las macros
Nótese que las macros van en un módulo común del editor de Vba.
- Creamos el evento
El código del evento
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strToCall As String
strToCall = Range("C2").Value
On Error Resume Next
If Target.Address = "$C$2" Then Application.Run strToCall
On Error GoTo 0
End Sub
debe ir en el módulo de la hoja. La función del evento es accionar la macro elegida cuando cambia el valor de la celda C2 que contiene la lista desplegable.
La instrucción On Error evita que la macro se detenga con un error cuando el usuario borra el valor de la celda C2 y ésta queda vacía.
Todo sobre listas desplegables en Excel, técnicas avanzadas y descarga gratuita de ejemplos en la Caja de Herramientas Excel - Listas Desplegables de JLD. Ver la nota o ir a la página de descarga de la guía.