Autofilter auf mehrere Tabellenblätter anwenden
Schritt-für-Schritt-Anleitung
Um einen Autofilter auf mehrere Tabellenblätter in Excel anzuwenden, befolge diese Schritte:
-
Vorbereiten der Blätter: Stelle sicher, dass alle relevanten Blätter den gleichen Datenaufbau haben, z.B. alle beginnen mit "TB_" und haben Filter in der Zeile 13.
-
VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Code einfügen: Kopiere den folgenden VBA-Code in das Modul „DieseArbeitsmappe“:
Option Explicit
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Const cWsPrefix As String = "TB_"
Const cRcTest As String = "$B$13"
Dim iX As Integer, iXF As Integer
Dim arrFilter()
If Sh.Type = xlWorksheet And Left(Sh.Name, Len(cWsPrefix)) = cWsPrefix Then
If Sh.AutoFilterMode = False Then Exit Sub
If Target.Address = cRcTest Then
Cancel = True
With Sh.AutoFilter
With .Filters
ReDim arrFilter(1 To .Count, 1 To 3)
For iXF = 1 To .Count
With .Item(iXF)
If .On Then
arrFilter(iXF, 1) = .Criteria1
If .Operator Then
arrFilter(iXF, 2) = .Operator
arrFilter(iXF, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
For iX = 1 To Worksheets.Count
If Left(Worksheets(iX).Name, Len(cWsPrefix)) = cWsPrefix And _
Worksheets(iX).Name <> Sh.Name Then
With Worksheets(iX)
On Error Resume Next
.ShowAllData
On Error GoTo 0
For iXF = 1 To UBound(arrFilter(), 1)
If Not IsEmpty(arrFilter(iXF, 1)) Then
If arrFilter(iXF, 2) Then
.Cells.AutoFilter Field:=iXF, Criteria1:=arrFilter(iXF, 1), _
Operator:=arrFilter(iXF, 2), Criteria2:=arrFilter(iXF, 3)
Else
.Cells.AutoFilter Field:=iXF, Criteria1:=arrFilter(iXF, 1)
End If
End If
Next iXF
End With
End If
Next iX
MsgBox "Filter Einstellung wurde auf alle TB_Blätter übertragen!", vbInformation
End If
End If
End Sub
-
Makro testen: Setze einen Filter in Zelle B13 eines beliebigen TB_Blattes und mache dann einen Rechtsklick. Der Filter wird auf alle anderen TB_Blätter angewendet.
Häufige Fehler und Lösungen
- Fehler: Filter funktioniert nicht: Stelle sicher, dass alle Blätter den gleichen Aufbau haben und die Filter in der gleichen Zeile (A13:D13) gesetzt sind.
- Fehler: „Alle anzeigen“ zeigt nicht alle Daten: Verwende die angepasste Version des Codes von Michael, die das Problem mit „Alle anzeigen“ löst.
Alternative Methoden
Eine alternative Methode, um den Excel-Filter über mehrere Tabellenblätter zu steuern, ist die Verwendung von Formularsteuerelementen. Du kannst einen Button erstellen, der das Makro ausführt, wenn du ihn klickst. Das vermeidet den Rechtsklick in Zelle B13.
Praktische Beispiele
Nehmen wir an, du hast mehrere Datenblätter, die alle mit "TB_" beginnen und in Zelle B13 einen Dropdown-Filter haben. Wenn du in einem dieser Blätter einen Filter setzt, wird dieser automatisch auf alle anderen TB_Blätter übertragen, was bedeutet, dass du mit nur einem Filter mehrere Tabellen gleichzeitig filtern kannst.
Tipps für Profis
- Wenn du excel mehrere filter gleichzeitig anwenden möchtest, kannst du den bestehenden Code erweitern, um mehrere Kriterien zu berücksichtigen.
- Achte darauf, dass du die Kopfzeile für alle Blätter übernimmst, um ein konsistentes Layout sicherzustellen.
- Verwende den Shortcut
ALT + F8, um schnell auf deine Makros zuzugreifen.
FAQ: Häufige Fragen
1. Wie kann ich den Filter von einem anderen Tabellenblatt steuern?
Du kannst den Filter über VBA auf andere Blätter anwenden, indem du den oben genannten Code modifizierst.
2. Kann ich mehrere Filter gleichzeitig in Excel anwenden?
Ja, du kannst mehrere Filter auf einem Tabellenblatt anwenden, indem du die Filterkriterien entsprechend anpasst.
3. Ist dieser Code mit Excel 2016 kompatibel?
Ja, der VBA-Code ist mit Excel 2016 und späteren Versionen kompatibel.