Заполните ComboBox в пользовательской форме с определенным диапазоном - PullRequest
0 голосов
/ 15 апреля 2019

В моей пользовательской форме ComboBox, этот ComboBox показывает список с более чем 100 значениями. Если я начну вводить некоторые буквы в ComboBox, я хочу, чтобы в раскрывающемся списке автоматически отображались только те значения, которые имеют напечатанные буквы (пока это работает нормально). Но если я выберу одно значение, ComboBox останется пустым.

Вот мой код для ComboBox:

Private Sub ComboBox1_Change()
    Worksheets("DataSheet").Range("B1").Value = dbCustomer.Value
    dbCustomer.RowSource = "=ddCustomer"   'Named Range
End Sub

В моей рабочей таблице «DataSheet» в столбце «D» я написал формулу:

=IFERROR(INDEX(Customer;AGGREGAT(15;6;(ROW(Customer)-1)/(--(SEARCH($B$1;Customer)>0));ZEILE()-1);1);"")

Именованный диапазон "ddCustomer", с которым я сохранил:

=DataSheet!$D$2:INDEX(DataSheet!$D$2:$D$105;COUNTIF(DataSheet!$D$2:$D$105;"?*"))

Что мне нужно изменить, чтобы выбранное мной значение отображалось в ComboBox?

EDIT

Не могу найти решение, возможно, оно не идеально, но у меня оно отлично работает.

Private Sub dbCustomer_Change()

    Dim customer As Object
    Set customerValue = Worksheets("DataSheet").Range("C2:C479").Find(dbCustomer.Value, LookIn:=xlValues, LookAt:=xlWhole)

    If customerValue Is Nothing Then
        dbCustomer.Clear
        GoTo FillDB
    Else
        Worksheets("DataSheet").Range("B1").Value = ""
        Exit Sub
    End If

FillDB:
    Worksheets("DataSheet").Range("B1").Value = dbCustomer.Value
    For Each customer In Worksheets("DataSheet").Range("D2:D479")
        If customer <> "" Then
            dbCustomer.AddItem customer.Value
        End If
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...