Hallo,
ich hatte das nicht ausgiebig getestet, da ich nur ein paar Datensaätze in der Testtabelle habe.
Ersetzte das vorhandene Makro durch den folgenden Code. Achte aber darauf, dass du die Function nicht löschst.
Hier der verbesserte Code:
Sub Alle_Filter_ubertragen()
Dim intSpalte As Integer
Dim strTabelle As String
Dim i As Integer
Dim f As Integer
Dim arrFilter(6, 4) As Variant
Dim bFilter As Boolean
Dim intFilterzeile As Integer
Dim myListObject As Object
'Bildschirmaktualisierung ausschalten:
'Application.ScreenUpdating = False
'prüfen, ob Daten im aktuellen Arbeitsblatt als Tabelle vorliegen
Set myListObject = testListObjects(ActiveSheet.Name)
'nun Filter entsprechend Ergebnis einlesen
If myListObject Is Nothing Then
  'keine Tabelle
  'Filter durchlaufen
  For intSpalte = 1 To 6
    With ActiveSheet.Autofilter.Filters(intSpalte)
       If .On Then
           arrFilter(intSpalte, 0) = Cells(ActiveSheet.Autofilter.Range(1).Row, intSpalte).Value  'Überschrift des Filters in Array schreiben
           arrFilter(intSpalte, 1) = .Count                                   'Anzahl Filterkriterien in Array schreiben
           arrFilter(intSpalte, 2) = .Operator                                'Operator in Array schreiben
           arrFilter(intSpalte, 3) = .Criteria1                               'Kriterium 1 in Array schreiben
           If .Count = 2 Then arrFilter(intSpalte, 4) = .Criteria2            'Kriterium 2 in Array schreiben
           bFilter = True                                                     'Marker, dass Filter gefunden wurde
       End If
    End With
  Next intSpalte
 Else
  'Tabelle
   'Filter durchlaufen
   For intSpalte = 1 To 6
      With ActiveSheet.ListObjects(1).Autofilter.Filters(intSpalte)
       If .On Then
          arrFilter(intSpalte, 0) = Cells(ActiveSheet.ListObjects(1).HeaderRowRange.Row, intSpalte).Value  'Überschrift des Filters in Array schreiben
          arrFilter(intSpalte, 1) = .Count                                   'Anzahl Filterkriterien in Array schreiben
          arrFilter(intSpalte, 2) = .Operator                                'Operator in Array schreiben
          arrFilter(intSpalte, 3) = .Criteria1                               'Kriterium 1 in Array schreiben
          If .Count = 2 Then arrFilter(intSpalte, 4) = .Criteria2            'Kriterium 2 in Array schreiben
          bFilter = True                                                     'Marker, dass Filter gefunden wurde
       End If
      End With
   Next intSpalte
End If
'Falls kein Filter gefunden, dann Hinweis und Abbruch des Makros
If bFilter = False Then
  MsgBox "Kein Filter gefunden! Abbruch", 64, "Hinweis"
  Exit Sub
End If
'Name des aktiven Arbeitsblatts in Variable schreiben
strTabelle = ActiveSheet.Name
'alle Arbeitsblätter in Arbeitsmappe durchlaufen
For i = 1 To ThisWorkbook.Worksheets.Count
  With ThisWorkbook.Worksheets(i)
    'nur die anderen Arbeitsblätter durchlaufen
    If .Name <> strTabelle Then
      'prüfen, ob Daten im aktuellen Arbeitsblatt als Tabelle vorliegen
      Set myListObject = testListObjects(.Name)
      If myListObject Is Nothing Then
         'keine Tabelle
         'ggf. vorhandene Filter aufheben
          If .FilterMode Then .ShowAllData
          'Filter übertragen, dazu gespeicherte Filter durchlaufen
          For f = 1 To 6
            'Überschriften vergleichen
             For intSpalte = 1 To 6
               If arrFilter(f, 0) = .Cells(.Autofilter.Range(1).Row, intSpalte).Value Then
                  'Filter übertragen
                  Select Case arrFilter(f, 1)
                     Case Is = 1
                       .UsedRange.Autofilter Field:=f, Criteria1:=arrFilter(f, 3), Operator:=arrFilter(f, 2)
                     Case Is = 2
                       .UsedRange.Autofilter Field:=f, Criteria1:=arrFilter(f, 3), Operator:=arrFilter(f, 2), Criteria2:=arrFilter(f, 4)
                     Case Is > 2
                       .UsedRange.Autofilter Field:=f, Criteria1:=Array(arrFilter(f, 3)), Operator:=arrFilter(f, 2)
                   End Select
               End If
             Next intSpalte
          Next f
       Else
         'ggf. gesetzte Filter zurücksetzen
          If .ListObjects(1).Autofilter.FilterMode Then .ListObjects(1).Autofilter.ShowAllData
          'nun Filter neu setzen
          For f = 1 To 6
            'richtiges Feld für Filter suchen
            For intSpalte = 1 To 6
               If .Cells(.ListObjects(1).HeaderRowRange.Row, intSpalte).Value = arrFilter(f, 0) Then
                 'Filter übertragen
                 Select Case arrFilter(f, 1)
                     Case Is = 1
                       .ListObjects(1).Range.Autofilter Field:=f, Criteria1:=arrFilter(f, 3), Operator:=arrFilter(f, 2)
                     Case Is = 2
                       .ListObjects(1).Range.Autofilter Field:=f, Criteria1:=arrFilter(f, 3), Operator:=arrFilter(f, 2), Criteria2:=arrFilter(f, 4)
                     Case Is > 2
                       .ListObjects(1).Range.Autofilter Field:=f, Criteria1:=Array(arrFilter(f, 3)), Operator:=arrFilter(f, 2)
                   End Select
                 End If
            Next intSpalte
          Next f
       End If
    End If
  End With
Next i
'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True
'Abschlussmeldung
 MsgBox "Die Filtereinstellungen wurden übertragen.", 64, "Hinweis"
'Variable zurücksetzen
Set myListObject = Nothing
End Sub
Gruß
M.O.