ich würde gerne eine Datentabelle mit den Kriterien Filtern, die in einer Listbox "angehakt" werden.
Konkret geht es darum, dass die Tabelle nach den Jahren gefiltert werden soll, die in der Userform angehakt worden sind.
Das Laden der Userform und auch das auswählen funktioniert.
Was nicht funktioniert ist das Filtern selbst. Es werden einfach alle Werte aus der Tabelle gefiltert, egal, ob ich ein Jahr oder mehre Jahre anklicke.
Der Code mit dem das Userform geladen und die Listbox mit Daten versehen wird:
Private Sub UserForm_Initialize()
Dim T_Blattname, Ctrl, Wertebereich As String
T_Blattname = ActiveSheet.Name
Debug.Print T_Blattname
Wertebereich = "D6:D437"
Ctrl = "Listbox1"
Dim objDic As Object
Dim Bereich As Range
Dim Zelle As Range
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets(T_Blattname)
Set Bereich = .Range(Wertebereich) 'relevanten Bereich ermitteln
End With
For Each Zelle In Bereich
objDic(Zelle.Value) = 0 'Nur Unikate sammeln
Next
UserForm1.ListBox1.List = objDic.keys
Wertebereich = "C6:C437"
Ctrl = "Listbox2"
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets(T_Blattname)
Set Bereich = .Range(Wertebereich) 'relevanten Bereich ermitteln
End With
For Each Zelle In Bereich
objDic(Zelle.Value) = 0 'Nur Unikate sammeln
Next
UserForm1.ListBox2.List = objDic.keys
End Sub
Und hier der Code mit dem ich versuche den Filter zu setzen:
Private Sub CommandButton1_Click()
Dim lngIndex As Long, ialngCount As Long
Dim avntMonth() As Variant
With ListBox1
If .ListIndex >= 0 Then
For lngIndex = 0 To .ListCount - 1
If .Selected(lngIndex) Then
ReDim Preserve avntMonth(ialngCount)
avntMonth(ialngCount) = .List(lngIndex)
ialngCount = ialngCount + 1
End If
Next
ActiveSheet.ListObjects("Datenbereich_A3").Range.AutoFilter Field:=4, _
Criteria1:=avntMonth, Operator:=xlFilterValues
End If
End With
End Sub
Hat jemand eine Idee warum das nicht klappt?
Beispielmappe: https://www.herber.de/bbs/user/136693.xlsm
Vielen Dank!