Moin Jelena,
eben habe ich mir Deinen Code noch einmal angeschaut und musste feststellen, dass da so Einiges vereinfacht werden kann. VBA scheint nicht Deine Muttersprache zu sein ;-)
Weder brauchst Du für die Aufgabe drei Schleifen, noch muss für jede Schleife eine neue Variable definiert werden. Der folgende Code gehört in Allgemeines Modul (Im VB-Editor ganz links oben mit der rechten Maustaste Einfügen > Modul) und kann über Alt+F8 bequem aufgerufen werden. Deinen bisherigen Code bitte komplett mit führenden Hochkommata auskommentieren.
Option Explicit 'zwingt zur Deklaration der Variablen WICHTIG! für die Fehlersuche
Public Sub Reset_Autofilter() 'die Deklaration setzt man alle hier zu Anfang, dadurch behält man den Überblick
Dim wb As Workbook, sht As Worksheet, sActive As String
Set wb = ThisWorkbook: Set sht = ActiveSheet
sActive = sht.Name 'aktives Sheet merken
Application.ScreenUpdating = False 'Geflacker aus
For Each sht In wb.Sheets 'nun EINE schleife durch alle Sheets
sht.Unprotect ("gs") 'Schutz abschalten
If sht.FilterMode Then 'Filter konfigurieren
sht.ShowAllData
End If 'Schutz wieder einschalten
sht.Protect Password:="gs", DrawingObjects:=True, Contents:=True, Scenarios:=False, AllowSorting:=True, AllowFiltering:=True
Next sht 'nächstes Sheet
wb.Sheets(sActive).Activate 'Dein erstes Sheet wieder aktivieren
Application.ScreenUpdating = True 'Geflacker an
End Sub
Falls noch Fragen sind - her damit! Grüße
d'r Bastler von den VBAsteleien.de