ich weiß, dass der Autofilter schon verschiedentlich behandelt wurde hier, habe aber trotzdem eine entsprechende Frage.
Ich habe ein Tabellenblatt mit folgenden Spalten:
Kreis/Bundesland/Dienstleister/Anbieter/etc
In den Zeilen befinden sich natürlich mehrere bzw. alle Kreise eines Bundeslandes und die entsprechenden Dienstleister/Anbieter
In einer Userform habe ich pro Bundesland eine Checkbox, die den Autofilter im Tabellenblatt betätigt. Die nicht versteckten Zeilen werden dann in einer Listbox angezeigt. Das Filtern mit den Checkboxen funktioniert auch alles wunderbar mit diesem Code:
Private Sub Auswahl_BL() ' Autofilter nach Bundesland
Dim sngIndex As Single
Dim ialngCount As Long
Dim astrFilterArray() As String
For sngIndex = 1 To 16
If Wettbewerbstafel("CheckBox" & CStr(sngIndex)).Value = True Then
ReDim Preserve astrFilterArray(ialngCount)
astrFilterArray(ialngCount) = Choose(sngIndex, "Baden-Württemberg", "Bayern", _
"Berlin", "Brandenburg", "Bremen", "Hamburg", _
"Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", _
"Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", " _
Thüringen")
ialngCount = ialngCount + 1
End If
Next
With Sheets("Tabelle1").Range("A:L")
If ialngCount > 0 Then
Call .AutoFilter(Field:=2, Criteria1:=astrFilterArray, Operator:=xlFilterValues)
Else
Call .AutoFilter(Field:=2)
End If
End With
End Sub
Wenn ich aber jetzt mit weiteren Checkboxen zusätzlich nach Anbieter filtern möchte klappt das nicht (unzulässige Verwendung von Null). Dazu habe ich ein weiteres Sub hinzugefügt, welches gleich dem obigen ist (Werte angepasst).
Private Sub Auswahl_AB() ' Autofilter nach Anbieter
Dim sngIndex As Single
Dim ialngCount As Long
Dim astrFilterArray() As String
For sngIndex = 17 To 25
If Wettbewerbstafel("CheckBox" & CStr(sngIndex)).Value = True Then
ReDim Preserve astrFilterArray(ialngCount)
astrFilterArray(ialngCount) = Choose(sngIndex, "XX", "XX", "XX", "XX", "XX", "XX", " _
XX", "XX", "Siehe Kommentarfeld", "Unbekannt")
ialngCount = ialngCount + 1
End If
Next
With Sheets("Tabelle1").Range("A:L")
If ialngCount > 0 Then
Call .AutoFilter(Field:=4, Criteria1:=astrFilterArray, Operator:=xlFilterValues)
Else
Call .AutoFilter(Field:=4)
End If
End With
End Sub
Wenn ich nur nach Anbieter mit dem ersten Code filtere geht das auch. Warum denn wohl nicht beides? Wisst Ihr hier Rat?
Vielen Dank.