我有一個ActiveX組合框,當用戶在組合框中輸入字符時,會有一個下拉列表填充和過濾。下拉項目從cLst
。因此,下拉菜單將打開,但只要用戶點擊向下箭頭,組合框就會填充第一個下拉菜單項,並且下拉菜單中的所有其他項目都會消失,因爲它會嘗試過濾下拉菜單中的項目組合框,與下拉菜單中的一個項目完全匹配(箭頭向下突出顯示的項目)。從自動填充組合框停止下拉選擇組合框
在向下箭頭的下拉菜單中,如何避免此自動填充行爲,並讓用戶在他們想要填充組合框的選項上點擊輸入?
如果用戶避免使用鍵盤,鼠標可以正常滾動並突出顯示,然後單擊,並且僅在單擊時填充組合框。我希望滾輪能夠在可能的情況下滾動瀏覽下拉菜單。
Private Sub newCmb_Change()
filterComboList Tool.newCmb, cLst
End Sub
Private Sub newCmb_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Tool.newCmb.DropDown
End Sub
Private Sub newCmb_GotFocus() 'or _MouseDown()
Tool.newCmb.DropDown
End Sub
Public Sub filterComboList(ByRef cmb As ComboBox, ByRef dLst As Variant)
Dim itm As Variant, lst As String, sel As String, rng As Range
With Worksheets("Database")
Set rng = Application.Intersect(.UsedRange.Rows(2), .Cells.Resize(.Columns.Count - 1).Offset(1))
End With
Application.EnableEvents = False
With cmb
sel = .Value
If IsEmpty(cLst) Then cLst = rng
For Each itm In cLst
If Len(itm) > 1 Then If InStr(1, itm, sel, 1) Then lst = lst & itm & "||"
Next
If Len(lst) > 1 Then .List = Split(Left(lst, Len(lst) - 2), "||") Else .List = dLst
End With
Application.EnableEvents = True
End Sub