Cuadro combinado en VBA

Excel tiene un control ActiveX conocido como Cuadro combinado el cual también es llamado comúnmente por su nombre en inglés: Combo Box. Este control nos permite crear listas desplegables en nuestros formularios.

Para insertar un Cuadro combinado debemos ir a la ficha Programador y dentro del botón Insertar pulsar el comando Cuadro combinado (control ActiveX):

Control ActiveX cuadro combinado

Después de dibujar el Cuadro combinado tendrás un resultado como el siguiente:

Cuadro combinado insertado en una hoja

Agregar elementos al cuadro combinado

Si quiero que el Cuadro combinado muestre los valores del rango A1:A5, puedo utilizar la propiedad ListFillRange donde puedo indicar este rango:

Propiedad ListFillRange del Cuadro combinado

Como resultado obtendré los valores de las celdas como elementos del Cuadro combinado:

Elementos de un cuadro combinado

Diferencia con el cuadro de lista

Una diferencia importante entre el Cuadro combinado y el cuadro de lista es que el primero permite que el usuario capture una opción diferente a las mostradas en la lista. En el ejemplo anterior no aparecía el día domingo como parte de los elementos, sin embargo puedo capturar el día domingo dentro del cuadro de lista.

Capturar un elemento en un cuadro combinado

Si quieres evitar que el usuario introduzca sus propios valores existen dos opciones:

  • Utilizar el control ActiveX Cuadro de lista en lugar del Cuadro combinado
  • Utilizar el Cuadro combinado pero validar la opción seleccionada con código VBA de manera que nos aseguremos que el usuario ha seleccionado una opción de la lista. Un ejemplo de código de validación es el siguiente:

Código VBA para validar elemento seleccionado de un cuadro combinado

Asociar una celda al cuadro combinado

Al igual que con otros controles ActiveX, podemos asocias una celda al cuadro combinado de manera que muestre el elemento de la lista que haya sido seleccionado. Esta configuración la hacemos en la propiedad LinkedCell:

Propiedad LinkedCell de un cuadro combinado

Cuando selecciones un elemento del cuadro combinado se reflejará dicha selección en la celda indicada en la propiedad LinkedCell:

Celda vinculada a un cuadro combinado