Исключая повторяющиеся значения в выпадающем списке - PullRequest
0 голосов
/ 03 марта 2020

Может кто-нибудь подсказать, как добавить код для исключения дублирующихся значений внутри выпадающего списка? Я уже исключаю некоторые строки, которые имеют определенные значения в колонке (например, когда работа уже выполнена). Если это невозможно сделать в коде 1, можно также удалить дубликаты после создания списка выпадающих списков. Но для этого я также не могу понять, как управлять.

Вот код моего списка со списком. Он находится внутри раздела Userform1_initialize.

    Dim LastRow As Long
    Dim aCell As Range

    Set ws = Sheets("Requests")
With ws

LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row

    For Each aCell In .Range("B3:B" & LastRow)
'dicard rows in dropdown for ease of use
        If aCell.Value  "" And aCell.Offset(0, 25).Value = "" And aCell.Offset(0, 22).Value  "on hold" And aCell.Offset(0, 22).Value  "cancelled" Then

        Me.ComboBox2.AddItem aCell.Value

    End If

Next
End With

1 Ответ

1 голос
/ 03 марта 2020

Вы можете использовать словарь сценариев (при условии, что вы не на ма c):

Dim dict, ws As Worksheet
Dim LastRow As Long
Dim aCell As Range

Set ws = Sheets("Requests")
Set dict = CreateObject("scripting.dictionary")

With ws

    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row

    For Each aCell In .Range("B3:B" & LastRow)

        'had to guess here since your Q is missing operators ...
        If aCell.Value <> "" And aCell.Offset(0, 25).Value = "" And _
           aCell.Offset(0, 22).Value <> "on hold" And _
           aCell.Offset(0, 22).Value <> "cancelled" Then

            If Not dict.exists(aCell.Value) Then '? new value ?
                Me.ComboBox2.AddItem aCell.Value
                dict(aCell.Value) = True 'add this value
            End If

        End If

    Next
End With
...