5 de septiembre de 2015

Cuadro combinado en VBA

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 propiedadListFillRange 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 propiedadLinkedCell:
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

No hay comentarios:

Publicar un comentario