可search的combobox,带有用户窗体上的build议列表

我有一个用户窗体和一些下拉列表combobox。 但是其中一个combobox在下拉菜单中有将近1000个项目,我希望用户能够开始在combobox中input一个单词,并根据input的单词得到一个可供select的build议列表,例如,在combobox中键入'joh'我想向他们展示包含'joh'的下拉列表中的所有选项,以便他们可以select他们想要的。 有近1000项需要上述function的combobox被命名为“cboProgrammeName”。 我应该说,下面的VBA已经提供了这个function,但并不完全。 目前,如果我在combobox中键入'joh',那么我必须单击combobox右侧的箭头才能看到所有基于'joh'的build议。 但是我想要的是VBA自动popupbuild议列表,而不必点击箭头。 那可能吗? 我的用户表格有很多的vba,但我认为这个问题的相关部分如下。 虽然我可以在这里张贴我所有的VBA代码,如果有帮助的话。 提前致谢

Private Sub UserForm_Initialize() 'Add the drop down lists to combo boxes Dim cProgrammeName As Range Dim cTaskName As Range Dim cUserName As Range Dim ws As Worksheet Set ws = Worksheets("XXX") For Each cProgrammeName In ws.Range("ProgrammeNameList") With Me.cboProgrammeName .AddItem cProgrammeName.Value .List(.ListCount - 1, 1) = cProgrammeName.Offset(0, 1).Value End With Next cProgrammeName For Each cTaskName In ws.Range("TaskNameList") With Me.cboTaskName .AddItem cTaskName.Value End With Next cTaskName For Each cUserName In ws.Range("UserNameList") With Me.cboUserName .AddItem cUserName.Value End With Next cUserName Me.txtDate.Value = "dd/mm/yyyy" Me.txtComments.Value = "please type text here if required" Me.cboProgrammeName.SetFocus Me.cboProgrammeName.Value = "type text to open a list of choices" Me.cboTaskName.Value = "click the arrow to open a list of choices" Me.cboUserName.Value = "click the arrow to open a list of choices" End Sub 

你可以尝试这样的事情…

UserForm模块上放置以下代码。 如果需要,更改图纸和范围参考。

 Private Sub cboProgrammeName_Change() Dim ws As Worksheet Dim x, dict Dim i As Long Dim str As String Set ws = Sheets("XXX") x = ws.Range("ProgrammeNameList").Value Set dict = CreateObject("Scripting.Dictionary") str = Me.cboProgrammeName.Value If str <> "" Then For i = 1 To UBound(x, 1) If InStr(LCase(x(i, 1)), LCase(str)) > 0 Then dict.Item(x(i, 1)) = "" End If Next i Me.cboProgrammeName.List = dict.keys Else Me.cboProgrammeName.List = x End If Me.cboProgrammeName.DropDown End Sub