AW: Autofilter auf mehreren Tabellen aktivieren
09.05.2008 13:29:26
fcs
Hallo Jürgen,
das funktioniert dann nur per Makro.
Das nachfolgende Makro kopierst du in ein Modul in deiner persönlichen Makroarbeitsmappe. Dann ist es immer verfügbar.
Die Startzeile und Startspalte des Autofilters -z.Zt. A1 (Cells(1,1)) muss du ggf. anpassen.
Ebenso die Aktion bei ggf. geschützten Blättern.
Beim Kopieren einer Datei/eines Tabellenblattes bleibt die Autofiltereinstellung erhalten.
Falls du "versehentliches" Abschalten des Autofilters verhindern willst, dann muss du mit Blattschutz arbeiten.
Gruß
Franz
Sub AutoFilterEin()
'Erstellt mit Excel 2003
'fcs 2008-05-09
'In allen sichtbaren Tabellenblättern ggf. den Autofilter setzen
'Bei geschützen Blättern wird temporär der Blattschutz aufgehoben
Dim objWks As Worksheet, bolSchutz As Boolean
Dim lngStartZeile As Long, lngStartSpalte As Long
Dim lngEndeZeile As Long, lngEndeSpalte As Long
For Each objWks In ActiveWorkbook.Worksheets
With objWks
Select Case .Name
Case "TabelleXYZ", "Tabelle999" 'Liste der Ausnahmen
'do nothing
Case Else
lngStartZeile = 1 'Nummer der Zeile mit den Spaltentiteln
lngStartSpalte = 1 'Nummer der Startspalte, Spalte A
'Prüfen ob Blatt eingeblendet
If .Visible = xlSheetVisible Then
'Prüfen ob Blattschutz aktiv
If .ProtectContents = False Then
'Prüfen, ob Autofilter bereits eingerichtet
If .AutoFilterMode = False Then
'Zeile der letzten benutzen Zelle
lngEndeZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
'Letzte Spalte mit Inhalt in der Startzeile
lngEndeSpalte = .Cells(lngStartZeile, .Columns.Count).End(xlToLeft).Column
'Autofilter setzen
.Range(.Cells(lngStartZeile, lngStartSpalte), _
.Cells(lngEndeZeile, lngEndeSpalte)).AutoFilter
End If
Else
.Unprotect
If .AutoFilterMode = False Then
lngEndeZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
lngEndeSpalte = .Cells(lngStartZeile, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(lngStartZeile, lngStartSpalte), _
.Cells(lngEndeZeile, lngEndeSpalte)).AutoFilter
End If
'Blattschutz wieder einrichten, Autofiltern ist zulässig
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End If
End If
End Select
End With
Next
End Sub