【问题标题】:drop down list combo box excel下拉列表组合框excel
【发布时间】:2017-06-05 00:44:18
【问题描述】:

我有一个可搜索的组合框,当我在其中输入字母时可以从中选择建议(下面的 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您想要的是,如果在用户尚未在组合中选择或写入任何内容时单击箭头,以显示列表的所有项目,您从命名范围 "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
    

    【讨论】:

    • 非常感谢。它似乎还没有工作。我的组合框中总是有一个文本,上面写着“在此处输入”。这可能是它不起作用的原因,例如因为它不是空白的吗?如果是这样,有没有办法改变你上面建议的 vba?
    • @thankseveryone 可以是If Trim(cbo1.text) = "type here" Then
    • @thankseveryone 谢谢,我很高兴听到你的话。不幸的是,我不在那个活动中。但可以肯定的是,我将随时待命并乐于提供任何帮助。 :)
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多