使用多層下拉列表,我創建了一系列用戶選擇。使用者從左側的第一個清單中進行選擇。然後,根據第一個選擇“角色”,使用者可以選擇“群組”。最終的“項目”選擇基於“組”。
但是,使用者隨後可以返回選擇與先前選擇的“項目”不匹配的不同“角色”或“群組”。
是否有提醒使用者的機制立即地他們輸入了錯誤的數據?
我知道您可以「圈選」無效數據,但這似乎需要用戶自己檢查,並且每次刷新。如果每次更改都能觸發這一點,那就完美了。
答案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
為引用的資料驗證清單中定義的可能性。
擴展適合您的資料的可能性,並為其他清單添加額外的層。