Вы находитесь на странице: 1из 8

Listas desplegables dependientes con combobox

Algunos de mis memoriosos lectores recordarn seguramente las notas sobre listas desplegables dependientes y listas desplegables dependientes mltiples que publiqu hace ya ms de seis aos la primera y casi cuatro aos atrs la segunda.

Ambas fueron muy populares, con ms de 120000 vistas y 250 comentarios. Hasta hoy en da sigo recibiendo comentarios y consultas relacionados con el tema de las notas. Una de las consultas ms corrientes es como construir el modelo pero usando el control combobox en lugar de validacin de datos, que es la tcnica que muestro en esas notas. Hay varias razones para usar el control combobox en lugar de listas desplegables de validacin de datos. Una de ellas es la posibilidad de usar la propiedad de autocompletar del combobox. Otra es el hecho de que con validacin de datos, la opcin se hace evidente slo cuando se elige la celda que la contiene. Slo cuando seleccionamos la celda que contiene la lista veremos la flecha que nos permite desplegar la lista de opciones. En cambio el cuadro combinado (combobox) es un objeto visible permanentemente. Empecemos por recordar que Excel cuenta con dos colecciones de objetos que pueden ser incluidos en una hoja: controles de formulario y controles ActiveX

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Los controles de Formulario son ms fciles de implementar, pero no nos sirven para nuestro modelo ya que no aceptan nombres que se refieren a rangos y tampoco se pueden programar. El primer paso es crear los nombres definidos que alimentan las listas desplegables. A los efectos de este ejemplo, los rangos sern estticos. En un modelo ms avanzado crearamos nombres definidos con rango dinmicos. La forma ms prctica de crear nombres definidos con rangos estticos es usar la funcionalidad Crear desde la seleccin

En la hoja Ciudades los rangos tienen tamaos distintos por lo que usaremos un pequeo truco para no tener que definir cada nombre por separado. En la hoja Ciudades tenemos de hecho una tabla donde los nombres de los pases figuran en la primer fila. El proceso es el siguiente:

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

1. Elegimos una de las celdas de la tabla (en nuestro ejemplo A1) 2. Apretamos Ctrl + * para seleccionar todo el rango de la tabla 3. Accionamos F5 (Ir A), apretamos el botn Especial y seleccionamos la opcin Constantes-Texto. Esto hace que slo las celdas que contienen los nombres de las ciudades sean seleccionadas. 4. Finalmente usamos Crear desde la seleccin-Fila superior

Este video muestra el proceso

Ahora tenemos que insertar los controles en la hoja. Elegimos el control cuadro combinado (combobox) de la coleccin ActiveX y lo insertamos en la hoja

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Al insertar el objeto en la hoja se activa al modo Diseo; en este estado, con el sontrol seleccionado, abrimos el men Propiedades para definir dos propiedades el control: Linked Cell y ListFIllRange

LinkedCell es la celda donde aparecer el resultado de la eleccin; en este control ponemos A2. ListFillRange es el rango que contiene los valores de la lista desplegable (en nuestro caso el nombre definido Continentes)

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Una vez definidas las propiedades apretamos el icono Diseo para pasar a la situacin normal de uso del control. Ahora podemos elegir un contienente y ste se registrara en la celda A2

Como explicamos en las notas anteriores, los nombres definidos no aceptan espacios entre las palabras. Por lo tanto usamos la funcin SUSTITUIR para transformar el resultado del control al nombre definido. En la celda A4 ponemos =SUSTITUIR(A2," ","_") Antes de agregar un nuevo control para la lista desplegable de los pases definimos el nombre continente elegido que se refiere a esta frmula: =INDIRECTO(eleccion!$A$4) En las propiedades del control definimos: LinkedCell: A6 ListFillRange: continente_elegido De esta manera la lista de las ciudades depende del continente elegido y el pas elegido se registra en la celda A6

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Nos resta insertar el control para elegir las ciudades. Empezamos por poner la frmula =SUSTITUIR(A6," ","_") en la celda A8 para transformar la eleccin del cuadro combinado en el nombre definido que contiene las ciudades del pas elegido. Luego creamos el nombre definido pas_elegido que se refiere a la frmula: =INDIRECTO(eleccion!$A$8) Ahora definimos las propiedades del control: LinkedCell: A10 (o cualquier otra celda donde queramos que aparezca la ciudad) ListFillRange: pais_elegido

Un ltimo toque es programar un evento que limpie el contenido de las combobox cuando se cambia la eleccin del continente. En el mdulo de la hoja del editor Vbe ponemos este cdigo

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Private Sub ComboBox1_Change() ComboBox2.Value = "" ComboBox3.Value = "" End Sub Este evento hace que cuando se cambia el valor en la Combobox1 (continents), se borran los valores de las dos restantes combobox. El archivo del ejemplo se puede descargar aqu.

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Trminos Legales
JLD Excel en Castellano by Jorge Dunkelman is licensed under a Creative Commons Reconocimiento-No comercial-Sin obras derivadas 3.0 Espaa License.

http://jldexcelsp.blogspot.mx/2012/07/listas-desplegables-dependientes-con.html

Вам также может понравиться