下拉列表组合框excel

时间:2017-06-05 00:44:18

标签: vba excel-vba excel

我有一个可搜索的组合框,当我在其中键入字母时(vba如下),可以选择建议。但是我希望能够单击组合框的箭头(如果我当然不在其中键入任何其他内容)并查看整个下拉列表。出于某种原因,如果单击箭头,下面的代码不会显示整个列表。

任何建议都非常感谢。

    Dim ws As Worksheet
    Dim x, dict
    Dim i As Long
    Dim str As String
    Set ws = Sheets("Lists")
    x = ws.Range("Listing").value
    Set dict = CreateObject("Scripting.Dictionary")
    str = Me.cbo1.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.cbo1.List = dict.keys
   Else
    Me.cbo1.List = x
   End If
   Me.cbo1.DropDown

1 个答案:

答案 0 :(得分:0)

您想要的是,如果在用户未选择任何内容或在组合中写入任何内容时单击箭头,则显示列表中的所有项目,您从命名范围"Listing"加载该项目而不进行任何操作过滤

为此,请将此事件处理程序添加到您的用户表单代码中:

Private Sub Cbo1_DropButtonClick()
  'If Len(Trim(cbo1.text)) = 0 Then
  If Trim(cbo1.text) = "type here" Then
    cbo1.List = Sheets("Lists").Range("Listing").Value
    Exit Sub
  End If

  ' Your code to add only items that match the characters typed by the user
  ' ...
End Sub