Sobre Data > Valuation

Una celda que por medio de Data > Valuation, adquiere propiedades de Allows List como combobox, puede contener forzadamente una lista de valores cuya fuente están en las celdas, todo esto mediante Valuation, solo que tengo un problema, cuando quiero desplegar algunos valores según mi criterio, no se como acceder a los elementos, ejemplo:
Si tengo una celda-combobox que almacena países, y en otra celda-combobox las ciudades, como puedo hacerle para que según seleccione yo el país, me despliegue sus ciudades propias de ese país que seleccione, ¿sin qué me muestre las demás ciudades que pertenecen a otros países?
Esto, sin tener que usar bases de datos relacionales, ni el combobox que viene en la barra de control de Visual Basic, ya que la propiedad de combobox, por el método que antes describí, realiza ya esta parte.
Gracias por tu valiosa ayuda.
Saludos

1 respuesta

Respuesta
1
Como seguramente no tenés solo 7 opciones en el primer desplegable (países) necesitaremos utilizar una macro o rutina para lograr que en el 2do desplegable solo se muestren las ciudades relacionadas.
1- Lo primero es armar las listas de ciudades por país. Por ej, en col B: ciudades del primer país, col C: ciudades del 2 país, y así hasta finalizar.
2- Luego seleccioná cada rango de ciudades y desde menú Insertar, Nombre, Definir le asignás un nombre.
3- Ahora entrá al Editor de macros, seleccioná con doble clic el objeto HOJA donde tendrás tu desplegable y allí copiá esta rutina.
Tendrás que ajustar la celda del primer desplegable y los nombres de rangos.
Private Sub Worksheet_Change(ByVal Target As Range)
'controlamos lo que se seleccione en celda A2
If Target.Address = "$A$2" Then
'se asigna lista de validación según el valor en A2
Select Case Target.Value
Case Is = "México"
listaCiudad = "ciudadesMex"
Case Is = "Argentina"
listaCiudad = "ciudadesArg"
Case Is = "Brasil"
listaCiudad = "ciudadesBra"
'otros case
End Select
'se selecciona la celda a derecha y se asigna validación de datos.
Target.Offset(0, 1).Select
With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=" & listaCiudad
'argumentos de la validación
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With
End If
End Sub
Está explicada por lo que no tendrás dificultades para ajustarla a tu modelo.
Sdos y no olvides finalizar la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas