Clever-Excel-Forum

Normale Version: [VBA] ComboBox in UserForm automatisch minimieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich brauche mal wieder eure Hilfe.

In meiner UserForm habe ich eine ComboBox mit über 100 Werten. Mein Wunsch ist es nun, dass wenn ich in der ComboBox anfange zu schreibe, dass die DropDown-Liste nur noch die Werte angezeigt werden, die die entsprechenden Buchstaben enthalten. (Das klappt soweit ganz gut)

Jedoch wenn ich dann einen Wert aus der DropDown-Liste auswähle, bleibt die ComboBox leer.

Hier mein Code für die ComboBox:
Code:
Private Sub ComboBox1_Change()
    Worksheets("DataSheet").Range("B1").Value = ComboBox1.Value
    ComboBox1.RowSource = "=ddCustomer"    'Definierte Range mit Namen
End Sub

Im Arbeitsblatt "DataSheet" habe ich in der Spalte "D" folgende Formel eingebaut: 

Code:
=WENNFEHLER(INDEX(Customer;AGGREGAT(15;6;(ZEILE(Customer)-1)/(--(SUCHEN($B$1;Customer)>0));ZEILE()-1);1);"")


Und die definierte Range mit dem Name "ddCustomer" habe ich über den Namens-Manager folgendermaßen abgespeichert:
Code:
=DataSheet!$D$2:INDEX(DataSheet!$D$2:$D$105;ZÄHLENWENN(DataSheet!$D$2:$D$105;"?*"))

Ich hoffe jemand kann mir helfen dieses Problem zu lösen oder einen besseren Weg zeigen wie ich das machen kann.

Schöne Grüße
Verzichte auf Rowsource.
Hallo snb,

okay, aber dann stellt sich mir die Frage wie ich die Werte sonst der ComboBox zuweise?

Grüße
(15.04.2019, 10:22)snb schrieb: [ -> ]schau mal z.B https://www.snb-vba.eu/VBA_Fill_combobox...ox_en.html

Ich hab es jetzt mal so probiert:

Code:
Private Sub dbCustomer_Change()
    
    Dim customer As Object
    
    Worksheets("DataSheet").Range("B1").Value = ComboBox1.Value
    
    For Each customer In Worksheets("DataSheet").Range("D2:D479")
        If customer <> "" Then
            ComboBox1.AddItem customer.Value
        End If
    Next
End Sub


Es wird mir jetzt zwar der ausgewählte Wert angezeigt, aber die DropDown-Liste verringert sich nicht. 

Ich komm leider nicht drauf wie ich das machen muss.
Hallöchen,

eventuell machst Du sie erst mal leer bevor Du wieder was anfügst?
Geht z.B. mit
ComboBox1.Clear