【问题标题】:prevent duplicate entry for this case防止这种情况下的重复输入
【发布时间】:2020-04-29 04:08:52
【问题描述】:

我想防止用户表单重复输入,让我解释一下,例如我有一个用户表单有两个字段,第一个是 NAME,是一个文本框,第二个是部门,它是一个组合框列表和一个按钮“添加基地” 所以我想授权,例如在工作表中

A      | B
marcel | IT
marcel | WAREHOUSE

(A为姓名列,B为部门)

但没有授权

A      | B 
marcel | IT 
marcel | IT

那么怎么解决呢?

【问题讨论】:

    标签: excel vba duplicates


    【解决方案1】:

    您可以使用 Dictionary 对象来收集唯一值。 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 对象的信息。

    希望这会有所帮助。

    【讨论】:

    • 谢谢,但是如何使这个字典上下文适应我的问题?
    • 我提供了一个示例,说明如何使用字典获取唯一值。由于您尚未在问题上发布代码,因此我无法准确地帮助您解决问题。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多