Hi Daniel,
was verstehst du unter "leider erfolglos"? Mit solch lapidaren Aussagen kann man absolut nichts anfangen - du musst schon sagen "WAS" nicht funktioniert - macht der Code nicht das gewünschte, löst er einen Fehler aus und wenn ja was sagt der Debugger genau usw.
Du schreibst "Datentabelle" - meinst du damit eine formatierte/intelligente Tabelle oder ganz normal die Daten deines Autofilterbereichs im Tabellenblatt?
Ich rate mal, du verwendest keinen "normalen" Autofilter sondern eine formatierte Tabelle - dann muss der Code wie folgt geändert werden:
Sub FilterWiederholen()
Dim rngFilter As Range
Dim rngZelle As Range
Dim lngTab As Long
Dim rngGefiltert As Range
Set rngFilter = Worksheets("Tabelle1").ListObjects(1).Range
If rngFilter.Columns(1).SpecialCells(xlCellTypeVisible).Count <> rngFilter.Columns(1).Cells.Count Then
For Each rngZelle In rngFilter.Columns(1).Cells
If rngZelle.RowHeight = 0 Then
If rngGefiltert Is Nothing Then
Set rngGefiltert = rngZelle
Else
Set rngGefiltert = Union(rngGefiltert, rngZelle)
End If
End If
Next rngZelle
For lngTab = 2 To 5
With Worksheets(lngTab).ListObjects(1)
If .AutoFilter.FilterMode Then
.AutoFilter.ShowAllData
End If
.DataBodyRange.Rows.Hidden = False
End With
Worksheets(lngTab).Range(rngGefiltert.Address).Rows.EntireRow.Hidden = True
Next lngTab
End If
End Sub
Es spielt keine Rolle, in welcher Spalte der Filter gesetzt ist, denn welche Kriterien gesetzt sind, kann man nicht auslesen, weil es zu viele Kombinationsmöglichkeiten gibt. Deshalb prüft der Code stattdessen, welche Zellen nicht sichtbar (also herausgefiltert) sind. Diese werden auf eine Variable geschrieben, sodass in den anderen Tabellenblättern genau dieselben Zeilen ausgeblendet werden. Aus diesem Grund ist es wichtig das zu beachten, was ich bereits in meinem vorhergehenden Beitrag geschrieben habe: in den anderen Tabellen wir KEIN FILTER gesetzt sondern nur dieselben Zeilen ausgeblendet wie in der ersten Tabelle.
Den Code musst du von Hand starten, da das Setzen eines Filters kein Ereignis auslöst, welches man auslesen kann um den Code automatisch zu starten.
Bis später, Karin