防止在这种情况下重复输入

时间:2020-01-12 00:00:03

标签: excel vba duplicates

我想防止用户表单重复输入,例如,我有一个包含两个字段的用户表单,第一个是NAME,是一个文本框,第二个是部门,它是一个组合框列表和一个按钮“添加”根据“ 因此我想在工作表

中进行授权
A      | B
marcel | IT
marcel | WAREHOUSE

(A是名称列,B是部门列)

但没有授权

A      | B 
marcel | IT 
marcel | IT

那么如何解决呢?

1 个答案:

答案 0 :(得分:0)

您可以使用Dictionary对象收集唯一值。字典对象是具有对应值的键(唯一)的集合。

我将举一个使用字典键获取唯一值的示例。在此示例中,我创建了一个带有组合框的用户窗体,下面的代码作为示例:

我的范围: Screenshot of Sample Range

Private Sub UserForm_Initialize
    Dim dict As Object 'Declare (Late binding)
    Set dict = CreateObject("Scripting.Dictionary") 'Create dictionary object (Late binding)

'Loop through your range where you want to collect unique values
    'loop through your desired range
    For Each cellFromColumnA In Sheet1.Range("A1:A7")
        'this will check first if value exists on dictionary. Value won't be added on the combobox if value already exists on the dictionary
        If Not dict.Exists(cellFromColumnA.Value) Then
            'add cell value as dictionary key as a reference
            dict.Add cellFromColumnA.Value, ""
            'add value to combobox1
            ComboBox1.AddItem cellFromColumnA.Value
        End If
    Next

    Set dict = Nothing
End Sub

这将是结果:Screenshot of The Result

您可以使用上面的代码,并根据需要进行更改。您可以参考this link来了解有关Dictionary对象的更多信息。

希望这会有所帮助。