предотвратить повторяющиеся записи для этого случая - PullRequest
0 голосов
/ 12 января 2020

Я хочу предотвратить повторяющиеся записи в пользовательской форме, позвольте мне объяснить, например, у меня есть пользовательская форма с двумя полями, первое из которых - ИМЯ и текстовое поле, второе - отдел, это комбобокс и кнопка «добавить». к основанию ", поэтому я хочу авторизоваться, например, на листе

A      | B
marcel | IT
marcel | WAREHOUSE

(A - столбец имен, B столбец департамента)

, но без авторизации

A      | B 
marcel | IT 
marcel | IT

так как это можно решить?

1 Ответ

0 голосов
/ 12 января 2020

Вы можете использовать объект Dictionary для сбора уникальных значений. Объект Dictionary представляет собой набор ключей (которые являются уникальными) с соответствующими значениями.

Я приведу пример использования ключей словаря для получения уникальных значений. В этом примере я создал пользовательскую форму с выпадающим списком с кодом ниже в качестве образца:

Мой диапазон: Снимок экрана выборочного диапазона

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

Это будет быть результатом: Снимок экрана Результата

Вы можете использовать приведенный выше код и изменять его в зависимости от ваших потребностей. Вы можете обратиться к этой ссылке , чтобы узнать больше об объекте Dictionary.

Надеюсь, это поможет.

...