Podemos también crear listas desplegables usando el control cuadro combinado (ComboBox). Pero en ese caso tendremos que usar técnicas un poco distintas de las que mostramos ayer.
Empecemos por señalar que hay dos tipos de controles: los de la barra de formularios y los ActiveX (tema que ya fue tratado en este blog). Los controles de la barra de formularios son fáciles de usar pero no pueden ser programados. Los ActiveX al poder programarlos son más flexibles, pero requieren un poco más de conocimientos.
Siguiendo con el ejemplo de la nota anterior, veremos cómo implementarlo con ambos tipos de controles.
Cuadro combinado de la barra de formularios.
Empezamos por crear las tres macros en un módulo común del editor de Vba
Sub dia()
MsgBox "Buenos dias"
End Sub
Sub tarde()
MsgBox "Buenas tardes"
End Sub
Sub noche()
MsgBox "Buenas noches"
End Sub
Luego creamos una lista con los nombres de las macros y le asignamos un nombre (en este caso usamos el cuadro de nombres para crearlo)
El próximo paso es pegar el cuadro combinado y definir sus propiedades. En la pestaña Programador
Una vez creado abrimos el menú de propiedades del control apretando el botón derecho del mouse.
En el rango de entrada ponemos el nombre que se refiere al rango con la lista de macros y en la casilla de vincular con celda ponemos alguna celda, no necesariamente en la misma hoja y no necesariamente visible
Ahora podemos ver que al elegir la opción "dia", la celda vinculada recibe el valor 1 (ya que "dia" es el primer elemento de la lista). Si elegimos "tarde" la celda vinculada recibe el valor 2.
El paso siguiente es crear una macro lo que haremos abriendo el menú contextual del control (clic con el botón derecho) y eligiendo la opción Asignar macro y apretando el botón Nuevo
En el editor de Vba veremos que Excel ha creado una macro, sin código en esta etapa
En esa macro ponemos este código
Sub Listadesplegable1_AlCambiar()
Dim intCaseSel As Integer
intCaseSel = Range("C8")
Select Case intCaseSel
Case 1: Call dia
Case 2: Call tarde
Case 3: Call noche
End Select
End Sub
Cada vez que un valor del cuadro combinado es elegido, la instrucción Select activa la macro correspondiente según el valor de la celda vinculada al control.
Cuadro combinado ActiveX
Empezamos seleccionando el cuadro combinado de los controles ActiveX
y pegándolo en algún lugar de la hoja. En el momento en que terminamos de pegar el control, la hoja pasa al modo "Diseño", lo que nos permite definir las propiedades del control. Abrimos el menú de propiedades (no el de formato!) y definimos el rango de los valores de la lista (ListFillRange)
En el próximo paso abrimos el menú Ver código. Excel crea un evento Change para el control,
donde ponemos este código
Private Sub ComboBox1_Change()
Application.Run ComboBox1.Value
End Sub
Nótese que el código está en el módulo de la hoja que contiene el control. El evento usa el método Run con el valor elegido en el cuadro combinado (ComboBox1.Value) para activar la macro adecuada.
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.