Refre sh Excel ActiveX ComboBox - PullRequest
       1

Refre sh Excel ActiveX ComboBox

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

У меня есть комбинированный список ActiveX в одной из таблиц Excel с несколькими вариантами выбора для выпадающего списка.

Когда пользователь вводит некоторые тексты в текстовое поле, он показывает выборки, которые совпадают с текстом подстановочным знаком.

Однако выпадающие списки не обновляются при срабатывании функции comboBox_Change (), если я не нажму кнопку со стрелкой вниз, тогда это будет отражать последний список.

Private Sub Workbook_Open()


Dim mainworkBook As Workbook, mainSheet
Set mainworkBook = ThisWorkbook
Set mainSheet = mainworkBook.Sheets("Sheet1")
mainSheet.ComboBox1.Clear
Dim Arr(5) As String

Arr(0) = "abc"
Arr(1) = "cde"
Arr(2) = "cdf"
Arr(3) = "cwd"
Arr(4) = "caw"
Arr(5) = "zsw"

With mainSheet.ComboBox1
          .Clear
          For c = 0 To UBound(Arr)
          .AddItem Arr(c)
          Next
          '.ListIndex = 0
          End With

mainSheet.ComboBox1.ListRows = (UBound(Arr) + 1)
mainSheet.ComboBox1.DropDown

End Sub

Код выше загружается при открытии рабочей книги для перечисления массива в выпадающих списках comboBox.

Private Sub ComboBox1_Change()
Dim mainworkBook As Workbook, mainSheet, poss
Set mainworkBook = ThisWorkbook
Set mainSheet = mainworkBook.Sheets("Sheet1")
Dim rng As Range, e, Arr(5) As String
Arr(0) = "abc"
Arr(1) = "cde"
Arr(2) = "cdf"
Arr(3) = "cwd"
Arr(4) = "caw"
Arr(5) = "zsw"

With mainSheet
e = .ComboBox1.Value

If e <> "" And (IsNumeric(Application.Match(e, Arr, False)) = False) Then
    .ComboBox1.Clear
    For c = 0 To UBound(Arr)
        If (UCase(Arr(c)) Like "*" & UCase(e) & "*") Then
            .ComboBox1.AddItem Arr(c)
        End If
    Next

ElseIf e = "" Then
    .ComboBox1.Clear
    .ComboBox1.ListWidth = .ComboBox1.ListWidth
    For c = 0 To UBound(Arr)
        .ComboBox1.AddItem Arr(c)
    Next

'ElseIf (IsNumeric(Application.Match(e, Arr, False)) = True) Then

End If
'MsgBox (.ComboBox1.ListRows)
.ComboBox1.ListWidth = .ComboBox1.ListWidth
.ComboBox1.ListRows = (UBound(Arr) + 1)
'.ComboBox1.ListIndex = 0
.ComboBox1.DropDown
End With


End Sub

Код для comboBox_Change такой же, как указано выше. Заранее спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...