Lista desplegable en barra de herramientas de excel

Hola! Tengo una consulta que realmente no puedo resolver. Busque en foros de internet y hay muchos datos pero nadie da en el punto exacto.
Mi problema es el siguiente.
Ayer decidí ahorrarme pasos en mi manejo de excel y me cree una barra personalizada por lo que pude agregar botones personalizados y ejecutar ciertas macros desde allí.
El tema en si es que para ejecutar las macros tuve que crear tantos botones como macros quisiera ejecutar. Por un tema de espacios se me dio de pensar como podría ahorrarme espacio en la barra de herramientas que cree ya que no es lo mismo tener 30 botones que por ahí (y acá se me prendió la lamparita y no puedo resolver la situación) tener una lista desplegable con nombres y a esos nombres asignarles la macro correspondiente.
Obviamente podría hacerlo a través de una lista desplegable en la planilla de excel propiamente dicha, pero la ventaja del botón o la lista desplegable en la barra de herramientas es que me puedo mover por todas las páginas que tenga la planilla y ejecutar la macro sin tener que ir a la página que tiene la lista desplegable o el commandbutton con la macro asignada y obviamente no tener que repetir tanto las listas desplegables o los commandbuttons tantas veces como páginas donde tenga que ejecutar la macro.
¿Hay algún paso simple para agregar la lista desplegable a la barra de herramientas personalizada? Si no es de la manera simple, ¿qué hay que hacer en VBA para poder lograrlo?
Para que nos acerquemos al concepto de lista desplegable en la barra de herramientas, necesito algo similar al botón Estilo de Linea y que se despliegue en ella el nombre que yo le di a las macros.
Gracias!

1 Respuesta

Respuesta
1
Pues mira tu código tiene lógica, pero no se si lo podrías hacer más sencillo, ¿en qué sentido?
Pues la lista despegable debe generar un valor en alguna celda, entonces llamar a tu variable por el valor de la celda, porque de lo que entiendo List(. ListIndex) te bota algo así como que la ubicación dentro de la lista de tu cliente y no propiamente el nombre del cliente. Espero me haya hecho entender, por el resto cuando leí inicialmente tu pregunta pensé en la función Do y claro en call pero llamando una variable no funciona call
AHora si son muchas macro esta engorroso, pero podrías utilizar
case select
Case 1
strclientes$ = "Nombre 1"
Macro1
Case 2
strclientes$ = "Nombre 2"
Macro2
End Select.
Hacer esto de muchos es bastante molesto, pero es lo único que se me ocurre.
Se me ocurrió lo siguiente para la parte de insertar la lista desplegable en la barra:
Sub Dropdownlist()
On Error Resume Next
CommandBars("Lista de Clientes").Delete
With CommandBars.Add(Name:="Lista de Clientes")
With .Controls.Add(Type:=msoControlDropdown)
.AddItem "Aca"
.AddItem "AGD"
.OnAction = "Clientes"
.TooltipText = "Seleccione Cliente"
End With
.Visible = True
End With
End Sub
Sub Cliente()
Dim (aca deberia definir la variable tal que sea igual a lo que cliqueo de la lista desplegable)
With CommandBars.ActionControl
Aca deberia decirle que segun lo que escoja de la lista, ejecute una macro asociada a ese nombre que selecciones. Variable definida en Dim = List(.ListIndex)
End With
Call La macro que tiene que estar asociada al item de la lista desplegable
End Sub
No se me ocurre si hacerlo con variables o definir comandos If, then, else entrelazados y hacer tantas sentencias como nombres de clientes tenga en la lista.
Se supone que definiendo la variable con Dim y que cada click que haga en la lista desplegable me tome ese valor, después debería hacer un call a la macro llamada con el mismo nombre del cliente en el cual hice click.
Deduzco que si el click que hago en la lista lo guardo en una variable, luego hago un call de la variable y listo. Pero ni idea como escribirlo, o si tengo idea pero en algo fallo.
Escribi algo asi:
Sub Clientes()
Dim strclientes$
With CommandBars.ActionControl
strclientes$ = List(.ListIndex)
End With
Call strclientes$
End Sub
Mi logica dice que strclientes$ tiene que ser un nombre de cliente tomado de la lista desplegable y una vez seleccionado haciendo click, ejecuta la macro llamada con el mismo nombre y ya definida en la planilla.
¿Dónde le estoy errando?
¿Algún manual donde se pueda aprender vba y no hacer tantas preguntas? jajajjaja
Respuesta muy buena. Opción 1 tu respuesta. Alternativa, en vez de volverme loco con listas desplegables podría crear un menu en su lugar y a el anexar las macros y ejecutarlas desde el menu.
Muchas Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas