Validación de datos con lista desplegable dependiente
Validación de datos con listas dependientes
Hola Dante hace un tiempo me ayudaste con una macro para este archivo, este cuenta con una Lista desplegable de Países (P) y por ahora solo tiene los departamentos (Q) correspondientes a Colombia (Digo por ahora por que seguro más adelante necesitare vincular a cada país sus departamentos/provincias o poblaciones) pero en este caso en particular lo que necesito es que al elegir un departamento me traiga todos los municipios o ciudades (O) pertenecientes a este específicamente, trate de hacerlo con una validación de datos de lista dependiente y me arroja error. Es de aclarar que los nombres de los no los puedo cambiar ya que este archivo se carga en otro software donde ya tiene los datos así y cualquier cambio bloquearía la carga
Agradezco mucho tu colaboración
Te envío los macros que pusiste al archivo y las imágenes del archivo si necesitas el archivo original me cuentas
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Row = 1 Then Exit Sub
'
Application.EnableEvents = False
If Intersect(Target, Range("Z1:Z5000")) Is Nothing Then
Target = UCase(Target)
Else
Target = LCase(Target)
End If
'
cols = Array("D", "P", "Q", "AD", "AE", "AJ", "AM", "AW")
noms = Array("GRUPOCUENTA", "PAISES", "DEPARTAMENTOS", "TIPOSAP", _
"CLASEIMPUESTO", "BANCOS", "CLASECUENTA", "GRUPOTESORERIA")
For i = LBound(cols) To UBound(cols)
If Not Intersect(Target, Columns(cols(i))) Is Nothing Then
Call PonerCodigo(Target, noms(i))
Exit For
End If
Next
Application.EnableEvents = True
End Sub
'
Sub PonerCodigo(Target, rango)
'Por.Dante Amor
Set b = Sheets("Bancos y Departamentos").Range(rango).Find(Target, lookat:=xlWhole)
If Not b Is Nothing Then
cod = b.Offset(0, -1)
Application.EnableEvents = False
With Target.Validation
.Delete
Target.Value = cod
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & rango
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Application.EnableEvents = True
End If
End Sub
Private Sub Workbook_Open()
Application.EnableEvents = True
End Sub