如何證明用戶資料驗證選擇與先前的用戶資料驗證選擇發生衝突?

如何證明用戶資料驗證選擇與先前的用戶資料驗證選擇發生衝突?

使用多層下拉列表,我創建了一系列用戶選擇。使用者從左側的第一個清單中進行選擇。然後,根據第一個選擇“角色”,使用者可以選擇“群組”。最終的“項目”選擇基於“組”。

但是,使用者隨後可以返回選擇與先前選擇的“項目”不匹配的不同“角色”或“群組”。

是否有提醒使用者的機制立即地他們輸入了錯誤的數據?

我知道您可以「圈選」無效數據,但這似乎需要用戶自己檢查,並且每次刷新。如果每次更改都能觸發這一點,那就完美了。

答案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為引用的資料驗證清單中定義的可能性。

擴展適合您的資料的可能性,並為其他清單添加額外的層。

相關內容