Me pueden ayudar con las listas desplegables condicionadas ?

18/09/2007 - 16:58 por jes | Informe spam
tengo una lista despegable de los nombres ed los estados, al elegir un nombre
de estado, necesito que la siguiente lista despegable aparezca sus
localidades o municipios. me pueden ayudar gracias

Preguntas similare

Leer las respuestas

#1 Jose L Almerida jlalmerida
18/09/2007 - 20:58 | Informe spam
"jes" escribió:

tengo una lista despegable de los nombres ed los estados, al elegir un nombre
de estado, necesito que la siguiente lista despegable aparezca sus
localidades o municipios. me pueden ayudar gracias


Hola debes de crear una tabla donde aparezcan los estados con sus municipios,
luego en una celda (C4) vas a crear la lista despegable y en la celda de al
lado(D4) con la funcion buscarV vas a obtener lo que deseas
la Formula es:
=buscarV(C4;rango de la tabla;2;falso)
Respuesta Responder a este mensaje
#2 Ivan
18/09/2007 - 21:02 | Informe spam
hola,

la verdad es que matarte, matarte, no es que te hayas matado dando explicaciones, pero al menos aqui has incluido alguna
frase dentro del cuerpo del mensaje. Menos da una piedra. Bueno, disculpa el 'chascarrillo', y al grano:

como [creo que] te da a entender Hector Miguel en tu otro ¿mensaje?, sin conocer mas datos, las soluciones podrian ser
bastantes, desde muy sencillas a muy retorcidas.

me temo que la mia es mas bien de estas ultimas. Te esplico los supuestos para los que esta hecha (prueba con copias de
la lista en un libro nuevo, copiando solo la lista en pej. la hoja1, para evitar llevarte el posible codigo y objetos
que tuvieras):

1º)tu lista esta en una hoja que NO se llama "Hoja2"
2º)en el libro tienes (o insertas) una hoja que se llame "Hoja2", la dejas vacia y si quieres la ocultas
3º)en la hoja que contiene la lista insertas dos 'listas desplegables'(combobox) de la barra de herramientas 'Cuadro de
controles' (OJO-> no te confundas de barra), que se llaman (o deberian llamarse) Combobox1 y 2 . Las colocas donde
prefieras y desmarcas el modo edicion (botoncito con regla y escuadra de la misma barra de herramientas)
4º)en la pestaña de la hoja [de la lista] haz click con boton secundario, de la lista eliges ver codigo. En la
hoja/modulo que se te abre, copias/pegas el siguiente codigo=>

'******************** pega desde aqui *******
Private Sub ComboBox1_Change()
Dim rng As Range
ComboBox2.Clear
Set rng = rngFiltroCampo(Range("a6:b" & [a65536].End(xlUp).Row), 2, 1, ComboBox1.Text)
If Not rng Is Nothing Then
LlenarCombo ComboBox2, rng
rng.Clear
Set rng = Nothing
End If
End Sub
'
Private Sub Worksheet_Activate()
Dim rng As Range
ComboBox1.Clear
Set rng = rngFiltroCampo(Range("a6:b" & [a65536].End(xlUp).Row), 1, 1)
If Not rng Is Nothing Then
LlenarCombo ComboBox1, rng
rng.Clear
Set rng = Nothing
End If
End Sub
'******************** pega hasta aqui *******

5º) fijate en los codigos, en donde pone=>

Set rng = rngFiltroCampo(Range("a6:b" & [a65536].End(xlUp).Row), 2, 1, ComboBox1.Text)

y=>

Set rng = rngFiltroCampo(Range("a6:b" & [a65536].End(xlUp).Row), 1, 1)

a) tienes que sustituir:

en ambos procedimientos Sub esto=>

a6:b

por el equivalente de tu lista, es decir, a6 seria la primera celda de tu lista, incluidos titulos, y b seria la ultima
columna de tu lista. Pej: si tu lista va desde la celda A1 hasta la celda K5000 deberias sustituirlo por => a1:k

por supuesto dejandolo como esta, es decir entre las comillas

b) el 1er 'nº' que va detras de '.Row),' debes sustituirlo por:

.- en el Activate: el nº de la columna donde tienes los paises
.-en el Change del Combobox1 por el nº de la columna donde estan los municipios

c) el 2º nº debes sustituirlo en ambos por el nº de la columna donde estan los paises

6º) ve al menu Insertar (del editor de VBa) y elige 'Modulo' ( a secas) y en esta nueva ventana que se te abre
copia/pega este otro codigo=>

'******************** pega desde aqui *******
Function rngFiltroCampo(rango As Range, colCopia As Byte, _
colFiltro As Byte, Optional criterio As Variant = "") As Range
Dim uf As Long
With rango
uf = .Rows.Count
If uf < 2 Then Exit Function
Application.ScreenUpdating = False
With .Parent
On Error Resume Next: .ShowAllData: On Error GoTo 0
.Range("it:iv").Clear
Worksheets("Hoja2").Range("a:a").Clear
If criterio = "" Then
.Range(rango.Cells(1, colCopia), _
rango.Cells(uf, colCopia)) _
.AdvancedFilter Action:=xlFilterCopy, criteriarange:="", _
copytorange:=Hoja2.[a1], unique:=True
Else
.[it2].Formula = "=(" & _
.Cells(rango.Cells(2, 1).Row, colFiltro).Address(0, 0) & "=""" & criterio & """)"
rango.AdvancedFilter Action:=xlFilterInPlace, criteriarange:=.[it1:it2], _
copytorange:="", unique:=True
.Range(.Cells(rango.Cells(1).Row, colCopia), .Cells(uf, colCopia)) _
.SpecialCells(xlCellTypeVisible).Copy Worksheets("Hoja2").[a1]
End If
With Worksheets("Hoja2")
uf = .[a65536].End(xlUp).Row
If uf = 1 Then
Exit Function
ElseIf uf > 2 Then
.Range("a1:a" & uf).Sort key1:=.[a2], _
order1:=xlAscending, Header:=xlYes
End If
Set rngFiltroCampo = .Range("a2:a" & uf)
End With
.[it1:it2].Clear
On Error Resume Next: .ShowAllData: On Error GoTo 0
End With
End With
End Function
¡--
Public Sub LlenarCombo(combo As MSForms.ComboBox, rango As Range)
Dim uf As Long
With rango
uf = .Rows.Count
Select Case uf
Case Is > 1: combo.List = .Value
Case Is = 1: combo.AddItem .Value
Case Else
End Select
End With
End Sub
'******************** pega hasta aqui ********

ahora vuelve a excel (alt+F11 o cerrando el editor

si estas en la hoja de la lista cambia de hoja y vuelve a ella para que se cargue el combo con los paises, y ya
simplemente, y si todo aido bien prueba a seleccionar algun pais y mira a ver el otro combo

-

como ves, la solucion no es compleja pero si lo son mis explicaciones y el retorcimiento de los codigos, que sabiendo
datos mas concretos seria posiblemente muy simplificables e incluso quizas evitables

bueno, espero te ayude y si quieres comentas las dudas

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Juan M
18/09/2007 - 22:04 | Informe spam
"jes" escribió
tengo una lista despegable de los nombres ed los estados, al elegir un
nombre
de estado, necesito que la siguiente lista despegable aparezca sus
localidades o municipios. me pueden ayudar gracias



Hola,

También puedes hacer las listas desplegables a partir de los criterios de
validación.

Revisa los siguientes enlaces y los ejemplos que vienen en ellos.

http://www.contextures.com/xlDataVal13.html
http://www.contextures.com/xlDataVal02.html

Si necesitas ayuda con algún ejemplo comentas.

Un saludo,
Juan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida