Listas desplegables relacionadas

Buenas.. Tengo un problema con un macro en excel.. Tengo un macro sobre listas desplegables relacionadas.. Es decir si yo elijo la opción A de la primera lista, en una segunda lista me va a desplegar todas la opciones relacionadas con A, si elijo la opción B en la primera lista, me va a desplegar todas las opciones relacionadas con B en la segunda lista y así sucesivamente...
El problema es que tengo que crear las listas que se van a desplegar en la segunda lista dentro de la misma hoja.. Y cada vez que borro o inserto filas o columnas se me corren las listas.. Este es el grandefecto que tengo con este macro..
Me gustaría saber si no existe una opción para colocar directamente las listas dentro del macro..
Otro defecto del macro es que solo lo puedo utilizar una vez dentro de una misma hoja.. Es decir no puedo colocar varias listas relacionadas en una misma hoja.
Este macro lo tome de una experta dentro de esta página, de verdad me ha servido bastante.. Pero me gustaría saber si se les puede realizar las mejoras que ya nombre..
Aquí anexo el macro..
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Target.Offset(0, 1).Value = ""
Select Case Target.Value
'se establece un Case por cada opción de MARCA
Case Is = "RC"
With Target.Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$AY$1:$AY$4"
End With
Case Is = "RCO"
With Target.Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$AZ$1:$AZ$3"
End With
Case Is = "RO"
With Target.Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$BA$1:$BA$3"
End With
Case Is = "ROCC"
With Target.Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$BB$1:$BB$3"
End With
'continuar con otras marcas
End Select
End If
End Sub

1 Respuesta

Respuesta
1
Como no hay muchas expertAs creería que se trata de una de mis respuestas, así que paso a explicarte algunos puntos:
Hay 3 formas de realizar esto:
1-Con listas validadas con fórmula (si las opciones de la 1er lista no superan las 7 que permite la función SI)
2- con macros (*)
3-con fórmulas (**)
(*) Para solucionar el problema que mencionas acerca de insertar o quitar 1 fila, para que no interfiera con otras listas, las debieras colocar hacia abajo y no hacia la derecha.
Ej: rango1 : AZ1:AZ10 ,rango2: AZ20:AZ40   y así.
Cuando insertes o elimines filas, los rangos se actualizan automáticamente
El otro problema se ajusta. Tu rutina se ejecuta si se produce un cambio en la col 2, aquí tendrás que separar por rangos, por ej:
if target.column = 2 then
'todas tus instrucciones para una lista en col B
elseif target.column = 3 then
'instrucciones para lista en col C
end if
O también podrías tener en la misma col 2 pero en diferentes celdas, entonces:
if target.address(false, false) = "B2" then
'instrucciones para 1 lista en B2
elseif target.address(false, false) = "B5" then
'instrucciones para otra lista
elseif target.address(........) = "B8" then
'3ra lista
end if
(**) Si necesitas un ejemplo para trabajar con fórmulas podes solicitarme el ej al correo que encontrarás en mi sitio.
De verdad muchas gracia.. bueno te escribí a tu correo.. y de verdad bastante agradecido.. efectivamente la creadora del macro que estoy utilizando es usted..
Eso me solucionaría el problema de insertar y de borrar filas.. pero a la hora de insertar o borrar columnas seguiría el problema..
Mañana probare la meora que me le hizo al macro para colocar varias listas desplegables relacionadas en una misma hoja.. cualquier cosa le consulto.. si no es mucha molestia..
Bastante rápida su respuesta..
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas