AW: Autofilter über alle Tabellenblätter
04.04.2013 15:59:23
Klaus
Hi Toumas,
gibt es denn auch auf JEDEM Blatt einen Autofilter? Wenn der irgendwo nicht gesetzt ist, steigt das Makro natürlich aus!
Um ganz sicher zu gehen, setze den Autofilter innerhalb des Makros. Im Beispiel mal immer für Spalte A:
Sub AlleFiltern()
Dim iWks As Integer
For iWks = 2 To Worksheets.Count
Call DoResetAutofilter(Worksheets(iWks), 1, 1, 1)
Worksheets(iWks).Range("A1").AutoFilter _
Field:=1, _
Criteria1:="=Zeile1*", _
Operator:=xlAnd
Next iWks
End Sub
Sub DoResetAutofilter(wksMySheet As Worksheet, iColFirst As Integer, iColLast As Integer, _
lRowFirst As Long)
'* in case a user used another autofiler, this makro resets the autofilter to where needed.
Dim lRowLast As Long
With wksMySheet
lRowLast = .Cells(.Rows.Count, iColFirst).End(xlUp).Row
If .AutoFilterMode Then .Cells.AutoFilter 'Turns OFF Autofilter, if any
.Range(.Cells(lRowFirst, iColFirst), .Cells(lRowLast, iColLast)).AutoFilter 'Turns ON _
Autofilter on given range
End With
End Sub
Dass Makro "DoResetAutoFilter" schaltet zunächst jeglichen Autofilter aus und setzt ihn dann neu, und zwar für den bereich A1 bis A-letzteZeile.
Grüße,
Klaus M.vdT.