Leider muss das Makro oben immer noch manuell über Button angestoßen werden, da es kein Ereignis gibt, das auf Filtern reagiert. Moment mal: Gibt es wirklich kein Ereignis? Doch eines gibt es. Und zwar das Application.AfterCalculate-Ereignis. Damit kannst du die Zeilen direkt beim Filtern wieder einblenden. Allerdings springt es auch bei jeder anderen Aktion an, wo eine Berechnung erfolgt. Deshalb ist es mit Vorsicht zu genießen. Probier es aber trotzdem mal aus.
In ein neues Klassenmodul namens Klasse1 kommt dieser Code:
Public WithEvents app As Application
Private Sub app_AfterCalculate()
Dim arr2(), i As Long, flton As Boolean
If ActiveSheet.Name = "Tabelle1" And ActiveWorkbook.Name = ThisWorkbook.Name Then
For Each f In ActiveSheet.AutoFilter.Filters
If f.On Then flton = True
Next f
If flton Then
Application.EnableEvents = False
arr2 = Array(12, 15, 18, 21, 24, 27, 30, 33, 36, 39)
For i = 0 To UBound(arr2)
Rows(arr2(i)).Hidden = True
Rows(arr2(i)).Hidden = False
Next i
Application.EnableEvents = True
End If
End If
End Sub
Dann noch in das Modul "Diese Arbeitsmappe dieser Code"
Dim xl As New Klasse1
Private Sub Workbook_Open()
Set xl.app = Application
End Sub
Solltest du in "DieseArbeismappe" schon Code stehen haben, kommt muss der neue davor eingefügt werden.
Nach dem Schließen und wieder öffnen der Datei sollte es funktionieren. Den Tabellennamen "Tabelle1" musst du natürlich noch anpassen.
Gruß Mr. K.