Combobox durchsuchen/filtern (VBA)

Edgar Kraft @, Mittwoch, 11.04.2018, 11:38 (vor 165 Tagen)

Hallo,

Ich habe einen Code der meine Combobox füllt und dieser funktioniert super.

    Private Sub UserForm_Initialize()
 
      With ActiveSheet
        If .FilterMode Then .ShowAllData
      End With
    Cells.EntireColumn.Hidden = False
 
    With Sheets("Blatt1")
        lngLastCol = .Cells(5, .Columns.Count).End(xlToLeft).Column
        ComboBox1.Column = .Range(.Cells(5, 18), Cells(5, lngLastCol)).Value
    End With
 
    End Sub

Nur ist diese Comboxbox nun mit sehr vielen Werten gefüllt und dies macht es manchmal Schwierig den richtigen Inhalt zu finden.

Gibt es eine Möglichkeit nach dem Wert in der Combobox zu suchen?
Bsp. Ich möchte den Eintrag "Kurse_Litauen_2018_fertig" auswählen/finden (dieser befindet sich z.B. an Position 89von 250)
Ich würde gerne nur in meiner Combobox "Litauen" eingeben und er filterert alle Einträge in der Combobox nach diesem Suchbegriff.
So das ich diesen Eintrag dann sofort auswählen kann.
Momentan muss ich immer die ganze Combobox durchscrollen.

Ich bin auf diese Lösung gestoßen:

    Option Explicit
 
    Dim varList As Variant
 
    Private Sub ComboBox1_Change()
 
    ComboBox1.List = Filter(varList, ComboBox1.Value)
 
    End Sub
 
    Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 
    Dim i As Long
    For i = 14 To 300         'Spalte R bis +300
        If ComboBox1.Value = Sheets("Blatt1").Cells(5, i).Value Then
            Sheets("Blatt1").Columns("A:LL").Hidden = False
            Sheets("Blatt1").Columns("R:JE").Hidden = True
            Sheets("Blatt1").Columns(i).Hidden = False
            ActiveSheet.Range("$A$5:$LL$16").AutoFilter Field:=i, Criteria1:="1"
            Exit For
        End If
        Next i
 
        Range("A5").Select
 
    End Sub
 
    Private Sub CommandButton1_Click()
    Unload UserForm1
    End Sub
 
    Private Sub UserForm_Initialize()
 
    Dim lngLastCol As Long
 
      With ActiveSheet
        If .FilterMode Then .ShowAllData
        .Columns.EntireColumn.Hidden = False
      End With
 
    With Sheets("Blatt1")
        lngLastCol = .Cells(5, .Columns.Count).End(xlToLeft).Column
        varList = Application.Transpose(Application.Transpose(.Range(.Cells(5, 18), Cells(5, lngLastCol)).Value))
        ComboBox1.List = varList
        ComboBox1.MatchEntry = fmMatchEntryNone
    End With
 
    End Sub

Bekomme jetzt aber den Fehler:

Laufzeifehler "380"
Die Eigenschaft List konnte nicht festgelegt werden.
Ungültiger Eigenschaftswert.


=> Combobox1.List = Filter(varList,Combobox1.Value)

Woran genau liegt das und was bedeutet der Fehler überhaupt?

Kennt jemand eine bessere Lösung?

Mit freundlichen Grüßen Edgar KRaft


gesamter Thread:

 RSS-Feed dieser Diskussion

powered by my little forum