AW: offen
27.01.2021 13:20:58
ChrisL
Hi Jürgen
Wenn du die Fehler einfach überspringst ist klar, dass du keine Fehlermeldungen mehr bekommst. Aber ein Endlosschleife solltest du definitiv nicht mittels Error-Handling abwürgen.
Wahrscheinlich hast du meinen Beispielcode nicht übernommen und Public b As Boolean einfach ausgelassen.
Zudem schau mal unter Extras, Verweise, ab da nicht etwas "gebrochen" ist (mal mit den Verweisen einer neuen Mappe vergleichen).
Nachfolgend wird die Listbox "dynamisch" geladen (n.b. auf eine Array-Lösung habe ich entsprechend dem Level bewusst verzichtet). Hiermit musst du jedoch auf ColumnsHeads verzichten und die Überschriften bei Bedarf manuell mittels Text-Label oberhalb der Listbox einfügen. Beides geht leider nicht, weil ColumnHeads nur mit RowSource funktioniert, aber damit lässt sich die Listbox nicht dynamisch gestalten.
Und die ComboBox habe ich dir ebenfalls angepasst. Sollte die letzte Zeile gefiltert sein, dann wäre diese mit dem bisherigen Code nicht in die ComboBox aufgenommen worden.
Public b As Boolean
Private Sub ComboBox1_Change()
If b Then Exit Sub
b = True
With Tabelle1.Range("A3:E3")
.AutoFilter
.AutoFilter Field:=5, Criteria1:=ComboBox1.Value
End With
Call LBladen
b = False
End Sub
Private Sub UserForm_Initialize()
' ListBox1.ColumnCount = 5 ' entfernen und direkt in der LB-Eigenschaft definieren
' LB-Eigenschaft ColumnHeads muss neu = False sein
Call LBladen
With Tabelle1.AutoFilter.Range
ComboBox1.RowSource = "e4:e" & .Rows.Count + .Row - 1
End With
End Sub
Private Sub LBladen()
Dim lngZeile As Long
ListBox1.Clear
With Tabelle1
For lngZeile = 4 To .Cells(Rows.Count, 5).End(xlUp).Row
If .Rows(lngZeile).Hidden = False Then
ListBox1.AddItem .Cells(lngZeile, 1)
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(lngZeile, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(lngZeile, 3)
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(lngZeile, 4)
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(lngZeile, 5)
End If
Next lngZeile
End With
End Sub
cu
Chris