Listas desplegables dependientes con combobox

domingo, julio 15, 2012

Algunos de mis memoriosos lectores recordarán seguramente las notas sobre listas desplegables dependientes y listas desplegables dependientes múltiples que publiqué hace ya más de seis años la primera y casi cuatro años atrás la segunda.



Ambas fueron muy populares, con más de 120000 vistas y 250 comentarios. Hasta hoy en día sigo recibiendo comentarios y consultas relacionados con el tema de las notas. Una de las consultas más corrientes es como construir el modelo pero usando el control combobox en lugar de validación de datos, que es la técnica que muestro en esas notas.

Hay varias razones para usar el control combobox en lugar de listas desplegables de validación de datos. Una de ellas es la posibilidad de usar la propiedad de autocompletar del combobox. Otra es el hecho de que con validación de datos, la opción se hace evidente sólo cuando se elige la celda que la contiene. Sólo 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



Los controles de Formulario son más fáciles 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 serán estáticos. En un modelo más avanzado crearíamos nombres definidos con rango dinámicos.

La forma más práctica de crear nombres definidos con rangos estáticos es usar la funcionalidad “Crear desde la selección”



En la hoja “Ciudades” los rangos tienen tamaños distintos por lo que usaremos un pequeño truco para no tener que definir cada nombre por separado. En la hoja “Ciudades” tenemos de hecho una tabla donde los nombres de los países figuran en la primer fila. El proceso es el siguiente:


  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 botón Especial y seleccionamos la opción Constantes-Texto. Esto hace que sólo las celdas que contienen los nombres de las ciudades sean seleccionadas.
  4. Finalmente usamos “Crear desde la selección-Fila superior”


Este video muestra el proceso



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



Al insertar el objeto en la hoja se activa al modo Diseño; 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 elección; en este control ponemos A2. ListFillRange es el rango que contiene los valores de la lista desplegable (en nuestro caso el nombre definido Continentes)



Una vez definidas las propiedades apretamos el icono Diseño para pasar a la situación 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 función 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 países definimos el nombre “continente elegido” que se refiere a esta fórmula:

=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 país elegido se registra en la celda A6



Nos resta insertar el control para elegir las ciudades. Empezamos por poner la fórmula

=SUSTITUIR(A6," ","_")

en la celda A8 para transformar la elección del cuadro combinado en el nombre definido que contiene las ciudades del país elegido.
Luego creamos el nombre definido “país_elegido” que se refiere a la fórmula:

=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 elección del continente. En el módulo de la hoja del editor Vbe ponemos este código

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í.


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.

90 comments:

Anónimo,  17 julio, 2012 17:08  

Fenómeno, gran explicación. Me queda la duda de como sacarle utilidad. Estoy dándole vueltas, y esto con que lo podemos combinar? Es decir, el combobox me muestra los paises y continenes que elija, y luego? Podría vincular esas celdas a algo y que me variara el contenido de alguna celda?

A ver si me ayudáis. Gracias!

Jorge L. Dunkelman 17 julio, 2012 19:43  

En dashboards o en cualquier tipo de informe dinámico donde el usuario elige los valores y el informe refleja los parámetros elegidos. Puedes fijarte por ejemplo en esta nota.

Anónimo,  18 julio, 2012 03:49  

Jorge, muy bueno el tutorial, excelente explicación. Te hago una consulta, necesito que cuando utilizo el combobox y digito alguna palabra que no existe en la tabla de datos original, dandole al intro u otro método me permita incorporarla en la tabla de datos original. Como se podría hacer eso?, gracias por tu atención.
Saludos Crisco

Jorge L. Dunkelman 18 julio, 2012 18:25  

Crisco,
habría que programar un evento que lo haga. Tal vez publique una extensión a esta nota basada en tu consulta.

Anónimo,  21 julio, 2012 20:21  

OK Jorge, mientras intento hacerlo como dices, espero con ansias la extensión de la nota, gracias.
Crisco

Anónimo,  12 agosto, 2012 07:20  

Hola Jorge, muy bueno el tema. Te comento que al seleccionar América Central, México y escoger ciudad sólo se despliega Akumal y Cancun y no todas las ciudades como la imagen que tú muestras. Esto pasa en todas las ciudades, sólo se despliegan dos, ¿por qué será?. Saludos,Pamela

Jorge L. Dunkelman 12 agosto, 2012 20:43  

Hmmm, no se por qué. Acabo de subor un nuevo archivo. Espero que esta vez funcione bien.

Anónimo,  23 noviembre, 2012 15:05  

Hola Jorge. Necesito usar el resultado de un combobox como texto, para ser utilizado en una formula de concatenar textos, pero me arroja un número, que supongo es el indice automático que le asigna excel. ¿cómo puedo dejarlo como texto?. Gracias. Jorge Urzúa

Jorge L. Dunkelman 23 noviembre, 2012 17:40  

En lugar de usar la combobox de la calección controles de formularia, tendrías que usar la combobox de la colección ActiveX.
Si po algún motivo tenés que usar la combobox fr Formularios, que da el número de índice, tendrías que usar la función INDICE para obtener el valor de la lista.

Oliver Ascencio Magaña 28 noviembre, 2012 01:16  

Oye man una pregunta....como puedo crear una lista a partir de 1 solo ComboBox....por ejemplo enlistar las ventas de un periodo mediantes un solo Combobox. Se que seria posible haciendo varios Combobox, pero veo que se puede linkear el resultado a una celda, me gustaria linkearlo a toda una lista de celdas. Gracias!!!

Jorge L. Dunkelman 30 noviembre, 2012 16:14  

No tengo claro qué es lo que tiene que aparecer en la combobox, los períodos o las ventas del perído?

Anónimo,  27 diciembre, 2012 23:18  

Hola, estoy intentando hacer esta practica, pero no me aparecen todos los valores como a ti, los rangos que estoy utilizando variables entre cada una, pero a lo mucho solo me aparecen 7 servicios de 18 por ejemplo, a que se podria deber este detalle?

Jorge L. Dunkelman 02 enero, 2013 18:23  

No podría decirlo sin ver el archivo.

Anónimo,  07 enero, 2013 22:04  

hola jorge en el ejemplo tuyo despues del primer sustituir en que celda va
=INDIRECTO(eleccion!$A$4)
ya que no puedo seguir

gracias por tu ayuda

Jorge L. Dunkelman 08 enero, 2013 07:22  

¿Podrías dar una explicación más detallada del problema?

nancy 14 enero, 2013 21:36  

COmo puedo vincular un combobox con un cuadro de lista, es decir, que al seleccionar un nombre en el combobox, aparesca en el cuadro de lista la direccion telefono, etc de una persona?
Gracias!

Jorge L. Dunkelman 16 enero, 2013 17:49  

Creando el código correspondiente, obviamente. El marco de un comentario no da para desarrollar el tema así que te sugiero consultes en alguno de los muchos foros de Excel/Vba.

José Antonio González 25 enero, 2013 20:04  

Hola Jorge... Solo para agradecerte tu publicación, ya que por tu post pude crear muchas graficas dinamicas sin necesidad de utilizar pivot table, por cierto, solo como comentario, tambien se pueden usar Concatenaciones y anidaciones en los indirectos, ésto para ahorrar procedimientos, como por ejemplo:
Ejemplo 1 Anidación
=INDIRECTO(SUSTITUIR(Dashboard!$B$1," ","_"))
Ejemplo 2 Concatenación y anidación
=INDIRECTO(SUSTITUIR(Dashboard!$B$1," ","_")&1))
Gracias... y en realidad infinitamente agradecido...!!

Anónimo,  11 marzo, 2013 20:35  

Donde Pongo la fórmula INDIRECTO?

Gracias por la ayuda

Jorge L. Dunkelman 11 marzo, 2013 21:57  

Al definir el nombre, en "se refiere a". Te sugiero que descargues el archivo del ejemplo y lo analices.

MeNtE eN sInErGiA 22 marzo, 2013 00:00  

Hola!!! Me gusta como explicas los procesos que hasta parecen sencillos y así son!!

Yo tengo un problemita al momento de ponerlo en práctica, ya que al tener los tres ComboBox, el segundo no me muestra el 100% de los que están en lo que lo que puse, en el adminustrador de nombres y en el tercero, muestra espacios vacíos cuando despliegas la lista y al mismo tiempo no muestra el 100% de lo enlistado.

¿qué puede ocurrir?

Gracias

Jorge L. Dunkelman 23 marzo, 2013 17:49  

Te sugiero que me envíes el archivo (fijate en las instrucciones en el botón Ayuda, en la parte superior de la plantilla).

Fran 24 marzo, 2013 23:45  

Buenas Jorge,

En primer lugar, enhorabuena por el blog.
Lo que yo estoy intentando hacer y no consigo saber como, es una lista desplegable, por ejemplo en la columna A, pero que al seleccionar una de las opciones de dicha columna, me cargue los valores asociados a esa selección en las columnas B,C,D... que estarían almacenados en otras columnas. Es decir, que si hay una lista de clientes, al seleccionar el nombre de la lista desplegable, me cargue el DNI, dirección, fecha de nacimiento en las columnas B, C y D respectivamente. No sé si me he explicado bien.

Un saludo y gracias por adelantado

Jorge L. Dunkelman 25 marzo, 2013 06:46  

Fran,
si con cargar te refieres a que aparezcan en determinadas celdas de la hoja, tienes que usar la función BUSCARV.

Fran 26 marzo, 2013 20:38  

Buenas Jorge,

Eso es justo lo que estaba buscando. Muchas gracias!

Anónimo,  27 marzo, 2013 01:11  

Hola, primero que todo muy grandiosos tus post, pero en este me he quedado con una duda, al bajarlo y revisarlo un poco mire que hay un nombre creado que dice "nro_de_fila", y mi pregunta es que para que y donde se utliza??? es necesario para que funcione bien esto??

Jorge L. Dunkelman 27 marzo, 2013 06:37  

No tiene ningún uso. Lo definí experimentando con distintas posibilidades al escribir la nota y me olvidé de eliminarlo en la versión final. Podés eliminarlo del modelo sin ingún problema.
Gracias por llamar la atención.
¿Has visto esta nota?

Anónimo,  28 marzo, 2013 00:10  

SI, me he leido muchos de tus post que tienen q ver con las listas, estan muy interesantes y han sido de mucha ayuda, gracias por la ayuda amigo

Anónimo,  28 junio, 2013 22:52  

Estimado, junto con saludarlo y agradecer esta gran ayudar, quiero si es posible que me ayude con la dependencia pero en el caso que la segunda dependencia utilice parte de un rango en común, por ejemplo: materiales: madera, yeso, espesor: 10 mm, 12 mm, siendo madera de 10 mm., es decir, espesor es compartido por dos o mas materiales, en el ejemplo propuesto serían las ciudades pero solo por un país, como puedo generar dicha dependencia modificando el rango de las celdas, esa es más o menos el problema, sin tener que crear listados únicos.Gracias

Anónimo,  29 junio, 2013 00:40  

Estimado, me puede ayudar con el uso del INDIRECTO, no logro aplicarlo para la dependencia. Una consulta más si es posible, como se puede bloquear la tercera dependencia, dado que al seleccionar el continente, este es seleccionado, pero si yo quiero seleccionar la ciudad te muestra por defecto la primera de la lista, es posible dejar en blanco dicha selección, y solo que demuestre una vez realizado las selecciones anteriores?. Gracias una vez mas

Jorge Dunkelman 29 junio, 2013 12:41  

Estimado,
si el espesor no depende del material no hay necesidad de crear lista dependiente. Sencillamente tendrías una lista independiente de materiales (yeso, madera) y una de espesores. La dependencia es necesaria si todos o algunos de los espesores dependen del material).

Jorge Dunkelman 29 junio, 2013 12:46  

En relación a la consulta sobre el uso de INDIRECTO, no termino de entenderla. Las celdas están en blanco hasta que se elige un valor en la lista deslegable.

princessa 05 julio, 2013 18:37  

Hola Jorge
Una consulta, mira yo necesito configurar una hoja de excel donde, por ejemplo, la columna "B" sea de tipo combobox y este combobox se llene de valores provenientes de una base de datos SQL Server, asi cada vez que cambie de fila se aparezca este combo y me permita seleccionar el dato. Esto para que pueda llenar una hoja seleccionando valores existentes en un DB y no de una hoja de excel, tienes alguna idea de como hacer esto, de antemano te agradezco la ayuda.

Jorge Dunkelman 06 julio, 2013 10:52  

Princessa,
para crear una combobox que aparezca cuando se activa una celda de un rango determinado te sugier ver la técnica que muestro en esta nota.
En cuanto a la fuente de valores de la combobox veo dos posibilidades:
1 - usar Datos-Obtener datos externos para crear una tabla. Se puede establecer que la tabla se actualice automáticamente cada vez que se abra el libro o usar el botón Actualizar.
2 - Usar Vba para definir los valores de la combobox (ListFillRange).

Anónimo,  08 julio, 2013 19:26  

Estimado,

Ya realice toda la formulacion, pero me esta trayecto en el 2 combo box solo el primer dato de mi lista, la lista es de mas de un dato.

Q pudiera ser este error?

Saludos Cordiales.

Gracias.

Jorge Dunkelman 09 julio, 2013 07:32  

Te sugiero que descargues el ejemplo y lo analices para ver donde esta tu error.

Anónimo,  15 julio, 2013 21:58  

Jorge,

Me quedan 2 dudas:

Si quiero poner fechas en el ComboBox, como lo cambio a formato fecha?

No me aparece la lista completa de los nombres en el ComboBox, me aparece la cantidad de datos que contiene la primera columna de la hoja de la hoja que seleccioné!

Muchas Gracias!
Esteban

Jorge Dunkelman 16 julio, 2013 07:28  

Hola Esteban,

para cambiar el formato del valor de la comcobox a fecha hay que programar el evento Change del objeto con este código

Private Sub ComboBox1_Change()
ComboBox1.Value = CDate(ComboBox1.Text)
End Sub

En breve publicaré una nota con una explicación más detallada.

En cuanto a la segunda consulta tengo que ver cómo estas definiendo la propiedad ListFillRange de la combobox.

Anónimo,  26 julio, 2013 03:47  

Muchas gracias!! estuve buscando mucho y no encontraba algo tan claro como este!
Gracias
Saludos desde chile!

Amadeo 26 septiembre, 2013 22:04  

Hola Jorge
Estuve mirando esta nota.
Me gustaría utilizar un combobox que al cargar una lista alfabeticamente desordenada, en primer lugar la ordene y en segundo lugar que cuando escriba en el combobox se autofiltre según las letras que voy escribiendo.

Ej si necesito buscar "trucha de río" y tipeo truch aparezcan las "truch" que pueda tener en la lista. Si en la lista tengo trucha de río, trucha de mar y trucha salmonada me tendría que aparecer esas tres.

Espero que lo hayas entendido

Saludos

Amadeo

Jorge Dunkelman 27 septiembre, 2013 16:51  

Hola Amadeo

el tema de la lista desplegable ordenada lo he tratado en esta nota y ampliado en esta otra.
En cuanto al tema del "autofiltrado" de la lista, he mostrado una técnica que permite hacer algo muy aproximado a lo que pides en esta nota.
Tal vez publique algo sobre el "autofiltrado" de listas desplegables.
También puedes adquirir mi guía sobre el tema de listas desplegables.

Anónimo,  10 octubre, 2013 00:14  

Saludos,

Muy interesante el blog, mi inconveniente es que cuando pretendo introducir el nombre para el ListFillRange del segundo Combobox, no lo graba; descargue el archivo de ejemplo y repetí la totalidad del ejercicio, pero el problema se repite, Muchas Gracias

Anónimo,  10 octubre, 2013 06:29  

Muchas Gracias, encontré mi error, pense que "eleccion" era una función y estaba copiando igual la formula..... y eleccion es el nombre del libro....

Neverland 05 noviembre, 2013 21:49  

Muchas gracias por las publicaciones. Tengo una duda..

Quiero tener una combobox con 4 opciones y que segun la que seleccione me realice una operacion matemática y me la muestre en unas celdas determinada.¿Es posible?

Me explico. Yo tengo 4 opciones que son clases de motores. si selecciono la opcion A quiero que en la celda H7 se me muestre un dato calculado anteriormente en un commandbutton mulltiplicado por 0.6 y en la H8 ese mismo dato multiplicado por 0.4.

Me salvarías la vida si pudiseses orientarme, es para un programa importante. Miles de gracias.

Jorge Dunkelman 06 noviembre, 2013 07:30  

Si, por supuesto. Pero aclaremos que en CommandButton no se realizan operaciones, se activan macros. La combobox tiene que estar vinculada a una celda y ésta recibe el número de orden de la opción elegida (si usas el control de la colección de Formularios). De acuerdo a este valor puedes usar la función SI o la función ELEGIR para que en la celda requerida se efectúe el cálculo apropiado.

pilar 26 noviembre, 2013 14:19  

Me podrías ayudar a introducir una lista en un formulario? Quiero que al ingresar datos en una BdD mediante un formulario, para algún campo se desplegué una lista y solo puedas introducir los valores de esa lista.
Muchas gracias.

Pilar

pilar 26 noviembre, 2013 14:26  

Hola Jorge, mi problema es muy básico. Quiero introducir datos en una BdD a través de un cuestionario, uno de los campos tiene que incluir una lista desplegable de la que el introductor seleccionará un valor. No consigo que en el formulario aparezca la lista, que si está en la base de datos y en validación de datos. Podrías ayudarme? Gracias

Pilar

Jorge Dunkelman 26 noviembre, 2013 16:40  

Pilar, en la nota se muestra la técnica paso por paso para incluir los valores en la lista desplegable. Si el método con combobox te resulta complicado puedes usar validación de datos con la opción lista para crear la lista desplegable y validar los datos.
Puedes ver las notas sobre el tema en el blo haciendo un clic a las etiquetas "Validación de datos" o "Listas Desplegables", en la nube de etiquetas.

pilar 26 noviembre, 2013 20:28  

Gracias Sr. Dunkelmam, pero no consigo hacerlo. El problema puede ser que trabajo en Office 2011 para Mac? No encuentro los comandos que usted me indica.
Muchas gracias

Pilar

Jorge Dunkelman 26 noviembre, 2013 20:44  

Si, todos los ejemplos están basados en Office para Windows

Anónimo,  27 noviembre, 2013 05:53  

como definen cotinente_elegido??
muchas gracias

Jorge Dunkelman 27 noviembre, 2013 06:57  

Fijate en la nota, en la parte que dice:Antes de agregar un nuevo control para la lista desplegable de los países definimos el nombre “continente elegido” que se refiere a esta fórmula:....
También puedes descargar el ejemplo.

Amadeo 28 noviembre, 2013 22:34  

Estimado jorge
TE escribo en este apéndice para preguntarte como puedo hader un combobox que al tenner una lista en él. Tipeando las letras se autofiltre. Que si escribo un par de letras aparezcan solo una lista que incluya estas letras.
Siempre muy atento te saludo esperando una posible respuesta

Amadeo

Tano Hernandez 06 enero, 2014 10:03  

Le batalle para que me funcionara pero al final salio, GRACIAS por tan magnifico apoyo....

Anónimo,  18 marzo, 2014 21:48  

Estimado Jorge: excelente post!! Solo tengo un problema: cuando quiero definir el ListFillRange del 2do. Combobox, al poner el nombre definido, se me borra (y la fórmula definida para el nombre está correcta!!) Qué puede ser? Ya descargué el ejemplo suyo y no logro entender por qué me da ese error a mí!! Muchas gracias! Saludos

Jorge Dunkelman 19 marzo, 2014 07:24  

No puedo decirte sin ver tu modelo. Puedes enviarlo siguiendo las instrucciones que aparecen en Ayuda (en la parte superior de la plantilla).

Angélica González 31 marzo, 2014 17:54  

Hola Jorge,

Gracias por su blog. Es muy ilustrativo. Tengo una consulta: Hay manera de seleccionar valores múltiples de una lista y que los resultados me aparezcan en una misma celda. Por ejemplo, tengo en una lista peras, manzanas y naranjas, pero no quiero seleccionar uno sólo si no la combinación de varios.

Gracias.

Jorge Dunkelman 01 abril, 2014 07:05  

Hola Angélica, se puede hacer pero usando otro tipo de control, el ListBox. Lo que no me queda claro que es lo que quieres hacer con los valores seleccionados. Una celda puede contener sólo un valor. Por ejemplo, si seleccionamos "peras", "manzanas" y "uvas", ¿qué es lo que tendría que aparecer en la celda?

Miguel Angel 05 abril, 2014 21:55  

Buenas tardes Jorge, antes me salía sólo 2 valores de la lista y ahora sólo 1, cuando éstas poseen más. He leído que alguien más le ha pasado, pero no encuentro la posible solución.
Un saludo y muchas gracias por tu blog.

Miguel Angel 05 abril, 2014 22:00  

Hola Jorge, me salía 2 y ahora sólo 1 fila de la lista del combo, cuando tienen más. He comprobado bien las listas, creadas con Indirecto.
Un saludo y gracias por tu blog.

Jorge Dunkelman 06 abril, 2014 16:36  

Miguel Ángel, tendrás que enviarme el archivo (fijate en el enlace Ayuda, en la parte superior de la plantilla).

Anónimo,  09 septiembre, 2014 21:01  

Hola! Gracias por el post!
Tengo un problema: Ejecuté el combo dependiente, funciona bien. Cierro y abro la planilla y ya no aparece nada en el dependiente! Arreglo, vuelvo a configurar, todo bien, cierro, abro, y ya no aparece nada de nuevo! Qué podrá suceder? GRacias. MArio

Jorge Dunkelman 09 septiembre, 2014 21:29  

Hola Mario,
¿qué tipo de comtrol usas (formulario o ActiveX)? ¿Dónde guardas los datos de origen del combobox? ¿Podés describir el arreglo que hacés?

Anónimo,  09 septiembre, 2014 21:42  

Hola Jorge. Los datos están en otras hojas del mismo libro. Una hoja tiene área de labores y otra hoja los cargos para cada área, análogamente a los planteas en el post, con casi nula variación, excepto que muestro las selecciones en otra hoja. Y funciona bien. Sólo oculto las hojas con los datos. Funciona bien. Cierro excel, vuelvo a abrir y ya desaparecen los datos del combo dependiente, manteniendo la configuración. Resuelvo eliminando el combo, genero otro, le doy los parámetros, todo bien. Cierro, abro, y ya no están. ¿? Gracias!

Anónimo,  09 septiembre, 2014 21:45  

Ah! Ocupo Activex! Gracias, Mario

Jorge Dunkelman 10 septiembre, 2014 07:19  

Mario, enviame una copia del archivo para que pueda hacerme una idea más cabal del problema. Fijate en el enlace Ayuda (en la parte superior del blog).

Anónimo,  26 septiembre, 2014 05:32  

Hola Amigo por favor me podrias ayudar .
Necesito que al encontrar el dato en el combobox de enter y se pase a la casilla de excel adjunta como lo ago

Jorge Dunkelman 26 septiembre, 2014 12:33  

Como aparece en el post, definiendo la celda donde debe aparecer el dato en la propiedad Linked Cell.

Anónimo,  09 octubre, 2014 14:33  

Hola: Estoy probando tu ejemplo y con Excel365 da problemas cuando cambias los elementos de un combo, me explico.
He añadido Paises a los continentes, y cuando cambias de continente, la lista de los países solo muestra 2 elementos, en vez de los 3 o 4 que haya puesto.
No se si con otras versiones de Excel funciona bien, pero con Office365 es lo que pasa :-(

Jorge Dunkelman 09 octubre, 2014 17:11  

Excel 365 se comporta como Excel 2013, así que no creo que se trate de un problema de versiones. Te sugiero que me envíes el archivo (fijate en el enlace Ayuda, en la parte superior del blog).

Anónimo,  09 octubre, 2014 21:35  

Hola amigo, Excelente la Explicacion! pero no logro entender la parte de "crear el nombre definido" y el uso de la formula =INDIRECTO(eleccion!$A$4), cuando yo copio =indirecto en mi excel, no me aparece como funcion eleccion, sino "elegir" descargue el archivo de ejemplo, pero no consigo donde utilizaste esa formula!

Anónimo,  10 octubre, 2014 00:35  

Hola! muy buena la explicacion, lo que me sucede es que creo el nombre definido con la formula =INDIRECTO(eleccion!$A$4) pero cuando lo coloco en las propiedades del combobox no me lo toma!

Anónimo,  10 octubre, 2014 10:46  

Hola Jorge, he cogido tu archivo y le he añadido países a cada continente. Cada continente contiene un numero 'diferente' de paises, esto es importante, en tu ejemplo siempre son 2 países.
Posteriormente he cambiado los nombres de los continentes para que reconozcan los nuevos países, y cuando cambias el continente en el combo, la lista de los países solo muestra 2 países, aunque el continente tenga 3.
Es decir, cuando se cambia un valor en un combo, falta un 'refresco' del control para que se dé cuenta de que el nº de elementos de la lista ha cambiado. No hay problema si el nº de valores es siempre el mismo (o mayor que 8), pero con listas pequeñas (2,3,4 elementos), no siempre muestra todos los valores (o muestra valores vacíos)
Yo lo he solucionado así:
Public Sub ComboBox1_Change()
ComboBox2.ListFillRange = ComboBox2.ListFillRange
' Provoca un refresco del control.
End Sub
Saludos

Jorge Dunkelman 12 octubre, 2014 08:19  

Para una expliación sobre los "nombres definidos" te sugiero leer esta nota del blog (tiene más de 8 años pero los conceptos siguen vigentes en las versiones actuales de Excel).
En cuanto a la función INDIRECTO, puedes ver que aparece en el asistente de fórmulas (también aparece entre las funciones sugeridas cuando empiezas a escribir =IND en la barra de las fórmulas).
¿Qué versión de Excel y en qué idioma usas?

Jorge Dunkelman 12 octubre, 2014 08:21  

Estimado, la fórmula no va en las propiedades del combobox sino en la definición del nombre definido, tal como se explica en la nota.

Jorge Dunkelman 12 octubre, 2014 08:27  

Como puedes ver en el video (o descargando el archivo), la lista desplegable se adapta a la elección Continente-País. Así que supomgo que el problema está en otro lado (¿has descargado el ejemplo).
De todas maneras te sugiero ver esta nota y tembién esta otra.

Anónimo,  05 enero, 2015 15:47  

Hola Jorge... Primero agradecerte por excelente post!! He seguido las pautas y el ejemplo minuciosamente pero al definir el ListFillRange del 2do. Combobox (contacto_elegido) se me borra. Que estaré haciendo mal??..
Te agradezco por la respuesta.
Saludos
Miguel

Jorge Dunkelman 06 enero, 2015 11:20  

Hola Miguel, te sugiero que descargues el ejemplo (hay un enlace al final del post) y veas si te ayuda. También puedes enviarme el archivo siguiendo las instrucciones que aparecen en el enlace Ayuda (en la parte superior de la plantilla del blog).

Anónimo,  06 junio, 2015 03:00  

Está bueno, pero sería genial algo similar en VBA en un form para gestionar un montón de cosas que son requeridas, pero que a veces se torna un plato de tallarines o fideos poder desarrollar en Excel.

Anónimo,  19 marzo, 2016 04:58  

Hola muchas gracias por el ejemplo, tambien descargue el ejemplo, pero al momento de desplegar mi segundo combobox solo me da 5 opciones de marcas por departamento, cuando cada departamento varia las opciones de marcas :(, que es lo que esta haciendo mal?
Gracias

Jorge Dunkelman 19 marzo, 2016 19:37  

Tendrías que enviarme el archivo para ver donde puede estar el problema.

Anónimo,  19 marzo, 2016 21:29  

Ok, a que correo le envío el archivo?

Jorge Dunkelman 20 marzo, 2016 07:08  

FIjate en el enlace Ayuda (en la parte superior del blog).

Adrian Guarniz,  23 julio, 2016 01:24  

Buenas tardes maestro! No consigo entender la parte "Luego creamos el nombre definido “país_elegido” que se refiere a la fórmula:

=INDIRECTO(eleccion!$A$8)
"

Jorge Dunkelman 24 julio, 2016 21:53  

Nombres definidos sonuna forma de definir rangos. Fijate en esta nota (bastante antigua, del año 2006)

Jefferson Olave Rubio 26 octubre, 2016 19:43  

Muchachos, puedo hacer esto mismo con una macro?

Jorge Dunkelman 30 octubre, 2016 19:54  

Por supuesto:
http://jldexcelsp.blogspot.co.il/2013/03/listas-desplegables-dependientes-otra.html

o

http://jldexcelsp.blogspot.co.il/2013/03/listas-desplegables-dependientes.html

francisca neira 21 noviembre, 2016 22:27  

Hola, en tu ejemplo cada continente tiene dos países, pero en las ciudades que son varias, al abrir el dato, se despliegan solo la cantidad de casos que tenía la original, de hecho en los casos de pocos paises, quedan espacios en blanco y luego se repiten los primeros. Me pasa esto también con mi archivo, podrías ayudarme? debo cambiar alguna configuración en propiedades?

Gracias!

Jorge Dunkelman 24 noviembre, 2016 18:40  

Fijate lo que pongo en el enlace Ayuda (en la parte superior del blog) y ponte en contacto conmigo por mal privado.

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP