2017-06-05 5 views
1

Ich habe eine durchsuchbare Combo-Box mit Vorschlägen zur Auswahl, wie ich Buchstaben eingeben (VBA unten). Jedoch möchte ich in der Lage sein, auf den Pfeil des Kombinationsfelds zu klicken (wenn ich nichts anderes darin einfüge) und die gesamte Dropdown-Liste zu sehen. Aus irgendeinem Grund zeigt der folgende Code nicht die gesamte Liste, wenn ich auf den Pfeil klicke.Dropdown-Liste Kombinationsfeld Excel

Alle Vorschläge sehr geschätzt.

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 

Antwort

0

Was Sie wollen, ist, dass, wenn der Pfeil geklickt wird, wenn noch nichts ausgewählt ist, oder in der Combo durch den Benutzer geschrieben, alle Elemente der Liste anzuzeigen, die Sie aus dem benannten Bereich laden "Listing" ohne Filterung.

so zu tun, fügen Sie diesen Event-Handler-Code Ihrer Userform ist:

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 
+0

Dank viel. es scheint aber noch nicht zu funktionieren. Mein Kombinationsfeld hat immer einen Text, der "Typ hier" sagt. Könnte das der Grund sein, warum es nicht funktioniert, zB weil es nicht leer ist? Wenn ja, gibt es eine Möglichkeit, den oben vorgeschlagenen VBA zu ändern? – thankseveryone

+0

@thankseveryone könnte 'Wenn Trimmen (cbo1.text) =" hier eingeben "Dann' –

+0

hilfreich wie immer, danke ASH – thankseveryone