Autofilter und Blattschutz
#1
Hallo zusammen,

ich stehe gerade vor einem Problem mit dem ich wirklich nicht gerechnet habe. Ich hab meine Tabelle mit einem Blattschutz versehen, damit die Formeln geschützt sind. Das Verwenden vom Autofilter habe ich explizit erlaubt. Nun ist mir aber aufgefallen, dass man die Filter über Start -> Sortieren und Filtern -> Löschen nicht zurücksetzen kann. Das finde ich sehr merkwürdig. Gibt es hier nicht einen Weg?

Durch die Hilfe des Forums habe ich bisher ein Makro erstellt, mit dem ich alle Filter zurücksetzen kann:

Code:
Sub Clear()
ActiveSheet.Range("Tabelle1").ListObject.AutoFilter.ShowAllData
ActiveSheet.Range("B1").Value = ""
End Sub

Der Button funktioniert zwar, aber es erscheint immer die Fehlermeldung, dass der Blattschutz drin ist. Kann man dies irgendwie umgehen?

Vielen Dank!
Antworten Top
#2
Hi,

funktioniert der Tipp mit B1 nicht.
http://www.clever-excel-forum.de/Thread-...ern?page=2

Gruß Elex
Antworten Top
#3
Hi,

doch das funktioniert ganz prima - solange es keinen Blattschutz gibt. Jedoch möchte ich einen Blattschutz aktivieren, um die Formeln zu schützen. Mit Blattschutz funktioniert das alles leider nicht mehr (Laufzeitfehler 1004).
Antworten Top
#4
Hallo

füge den Code in das Modul DieseArbeitsmappe ein.
Code:
Private Sub Workbook_Open()
Sheets("Tabelle1").Protect AllowFiltering:=True, userinterfaceonly:=True
Sheets("Tabelle1").ListObjects("Tabelle1").AutoFilter.ShowAllData
End Sub
Jetzt kannst du den Blattschutz aufheben und auch wieder setzen und es sollte laufen.
Blatt und Tabellennamen evtl. anpassen.


Gruß Elex

PS: Warum machst du zum gleichen Problem immer neue Themen auf?
Antworten Top
#5
Hm, wenn ich den Code in "DieseArbeitsmappe" einfüge ändert sich das Verhalten nicht. Ich bekomme weiterhin den Laufzeitfehler.
Ich habe mal meine Arbeitsdatei angehängt.


Angehängte Dateien
.xlsm   Tabelle über Suchfeld filtern.xlsm (Größe: 18,54 KB / Downloads: 6)
Antworten Top
#6
Hi

bei mir läuft deine Datei so wie erwartet. Keine Fehlermeldungen. Nur bei B1 musst du noch den Zellschutzt entfernen.
Beschreibe wenn der Fehler bei dir Auftritt.

Fehlermeldung würde es nur geben wenn gar kein Autofilter verwendet wird im Blatt.

Bis dahin
Antworten Top
#7
Hallöchen,

im Listobject funktioniert der AutoFilter etwas tricky. Der Code
Code:
Sheets("Tabelle1").ListObjects("Tabelle1").Range.AutoFilter
schaltet den Autofilter ein oder aus, je nachdem, wie der momentane Zustand ist

Der Code
Code:
Sheets("Tabelle1").ListObjects("Tabelle1").Range.AutoFilter field:=1
zeigt alle Daten an, der Filter bleibt dabei eingeschalten. Ist der Filter ausgeschalten, wird er dabei eingeschalten.


Ein Fehler sollte bei den beiden Varianten nicht kommen, sofern nicht "übergeordnete" Ursachen, wie z.B. ein Blattschutz, vorliegen
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Hi André,

das "Listobject" bedeutet, daß auf dem Blatt 1 eine intelligente Tabelle ist?

Wenn der Filter eingeschaltet ist und ich nehme die zweite Codezeile
Code:
Sheets("Tabelle1").ListObjects("Tabelle1").Range.AutoFilter field:=1
dann ist anschließend immer der Filter eingeschaltet und alle Daten werden gezeigt?

Nehme ich die erste Zeile
Code:
Sheets("Tabelle1").ListObjects("Tabelle1").Range.AutoFilter
wird nur umgeschaltet zwischen "Auto-Filter ein" und "Auto-Filter aus"? Wie wenn ich auf den Filtern-Button in der Symbolleiste drücke.

Wie kann ich prüfen, ob überhaupt ein Autofilter gesetzt ist?
Antworten Top
#9
Hallo Ralf,

ja, korrekt. So meinte ich das. Bei dem ...field:=1 wird das Filterkriterium weggenommen und dadurch alles angezeigt. Das andere ist wie der Schalter.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
Hallo @Rabe

Zitat:Wie kann ich prüfen, ob überhaupt ein Autofilter gesetzt ist?
 
If ListObjects("Tabelle1").ShowAutoFilter Then MsgBox "ja"
 

 
Wenn der Filter eingeschaltet ist und ich nehme die zweite Codezeile.
Code:
Sheets("Tabelle1").ListObjects("Tabelle1").Range.AutoFilter field:=1
dann ist anschließend immer der Filter eingeschaltet und alle Daten werden gezeigt?
 
Nicht ganz richtig.
Wenn die Tabelle über mehr als eine Spalte gefiltert ist (z.B. Spalte 1 und 3.), dann wird mit der Codezeile nur der Filter aus Spalte 1 entfernt und nach 3 bleibt gefiltert.
Alle entfernen mit ShowAllData.
 
Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • schauan
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste