Digamos que você configure suas listas de validação de dados na Planilha2 e configure sua primeira validação de dados em Sheet1!A2
. E você queria alterar a validação de Sheet1!B2
com base no que foi selecionado em Sheet1!A2
. Você colocaria esse código no módulo de planilha para Sheet1 :
Código
Sub worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
If Target.Value = "one" Then
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!B1:B2"
End With
End If
If Target.Value = "two" Then
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!B3:B4"
End With
End If
If Target.Value = "three" Then
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Sheet2!B5:B6"
End With
End If
End If
End Sub
Em seguida, você configuraria instruções if
adicionais para cada lista adicional à qual deseja adicionar validação.
Explicação
Basicamente, isso está dizendo que, se houver uma alteração na planilha, verifique se ela está em A2
e se ela contém um valor. Este valor só estará dentro da sua folha de validação de dados. Então, se estas coisas são verdadeiras então:
Verifique cada valor possível e, em seguida, defina a validação de dados de B2
para as possibilidades definidas na sua lista de validação de dados conforme mencionado.
Expanda as possibilidades de ajustar seus dados e adicione camadas adicionais para listas adicionais.