使用多层下拉列表,我创建了一系列用户选择。用户从左侧的第一个列表中进行选择。然后根据第一个选择“角色”,用户可以选择“组”。最终的“项目”选择基于“组”。
但是,用户可以返回选择与之前选择的“项目”不匹配的其他“角色”或“组”。
是否有机制提醒用户立即地他们输入了错误的数据?
我知道你可以“圈出”无效数据,但这似乎需要用户自己检查,并且每次都刷新。如果每次更改时都能触发该操作,那就太完美了。
答案1
假设您在 Sheet2 上设置了数据验证列表,并在 上设置了第一个数据验证。并且您想根据 中选择的内容Sheet1!A2
更改 的验证。您可以将此代码放在Sheet1!B2
Sheet1!A2
Sheet1 的工作表模块:
代码
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
if
然后,您将为想要添加验证的每个附加列表设置附加语句。
解释
基本上,这意味着如果工作表上有变化,请检查它是否在A2
并且包含一个值。此值将仅在您的数据验证表中。因此,如果这些情况属实,则:
检查每个可能的值,然后将数据验证设置B2
为参考的数据验证列表中定义的可能性。
扩展适合您的数据的可能性并为附加列表添加额外的层级。