Clever-Excel-Forum

Normale Version: Alle Filter beim Schließen der Datei zurücksetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo,

ich arbeite gerade an einem Excel Dokument, an dem parallel auch andere Personen arbeiten. Viele filtern die Tabelle und speichern diese ab. Gibt es eine Möglichkeit, dass beim Schließen der Datei automatisch alle Filter zurückgesetzt werden?

Vielen Dank!
Hi,

das wird nur mit einem Makro gehen.
Hi,

hab' mal eines aufgezeichnet. Du kannst einem Button dieses Makro zuweisen - es werden alle Filter aufgehoben, die Datei gespeichert und geschlossen.


Code:
Option Explicit

Sub FilterEntfernenVorSpeichern()

   Selection.AutoFilter
   ThisWorkbook.Save
   ThisWorkbook.Close
   
End Sub
Hi,

d.h. man muss die Datei dann auch über diesen Button schließen? Gibt es auch eine Möglichkeit, dass man die Excel-Datei ganz normal schließt und dann das Makro startet und die Filter zurücksetzt?
Hallöchen

da gibt es in DieseArbeitsmappe oben rechts zur Auswahl ein Ereignismakro … BeforeSave. Dort nimmst Du die Zeile mit dem AutoFilter rein.

Mal noch ein Hinweis zum Aufzeichnen. Man sollte berücksichtigen, dass Excel beim Ausführen eines aufgezeichneten Makros eventuell irgendwo ist und nicht genau an der Stelle, wo man das Makro benötigt. Ich tue dabei dann meist irgendeine Zelle auswählen, auf ein anderes Blatt gehen usw. und dann die Aufzeichnung starten. Da muss ich erst das Blatt wählen, den Bereich / die Zelle, wo ich was machen will usw. Dadurch erhöht sich die Wahrscheinlichkeit, dass der Code gleich läuft Smile
Falls spezielle Einstellungen erforderlich sind, ändere ich die vorher ggf. auch, sodass bei der Aufzeichnung auch das noch dabei ist.
Hi,

VBA und ich sind noch keine Freunde - deshalb auch nur das aufgezeichnete Makro. Das müssen dir die Spezialisten noch umschreiben, falls du es auch nicht kannst. Im Augenblick macht es zwar das, was es soll. Allerdings müssen dabei wirklich Filter gesetzt sein. Falls keine gesetzt sind, bekommst du eine Fehlermeldung.

Wenn du es trotzdem verwendest, musst du nur "ThisWorkbook.close" löschen. Dann kannst du es nach dem Filterentfernen manuell schließen. Gespeichert ist es automatisch.


Zitat:[...]dass man die Excel-Datei ganz normal schließt und dann das Makro startet und die Filter zurücksetzt?

Das geht nicht. Erst Filter zurücksetzen und speichern (Makro), dann schließen.
Hallöchen,

dann ich auch noch mal

Zitat:[...]dass man die Excel-Datei ganz normal schließt und dann das Makro startet und die Filter zurücksetzt?

Wenn Du beim Speichern keine Filter gesetzt hattes, dann kannst Du die Datei schließen, es sind keine Filter drin und Du brauchst das Makro nicht.

Wenn Du die Datei speicherst und hast meinen Hinweis befolgt, sollten die Filter raus sein. Wenn Du die Datei dann aber nicht schließt sondern weiter arbeiten willst, musst Du die Filter wieder aktivieren.

Wenn Dir letzteres nicht zusagt, müsstest Du als Ereignis BeforeClose nehmen und dabei aber die Datei auch nochmal speichern, das ist die Zeile mit dem Save.
Das hat allerdings den Nachteil, wenn Du mal nur zumachen willst ohne zu speichern, weil vielleicht was nicht in Ordnung war, geht das nicht mehr. Es wird mit dem Makro ja bei jedem Schließen gespeichert. Da könnte bzw. müsste man noch eine Abfrage dazuschreiben, um das bei Bedarf verhindern zu können …
Hi,

man könnte doch beim Speichern ("BeforeSave") und beim Schließen ("BeforeClose") jeweils die Filterung zurücksetzen, sodaß der Autofilter zwar eingeschaltet ist, aber alle Daten angezeigt werden.
Hallo Ralf,

ja, so geht das auch.
Mir ging's darum, dass es beim Schließen und Speichern verschiedene "Bedürfnisse" geben kann. Da müsste man sich die verschiedenen möglichen bzw. wahrscheinlichen Fälle mal aufschreiben und was dabei passieren soll und danach dann programmieren.
Hallo,

stimmt, es macht mehr Sinn die Filter "BeforeSave" zurückzusetzen. Durch folgenden Befehl hat es geklappt:

Code:
ActiveSheet.Range("Tabelle1").ListObject.Autofilter.ShowAllData
ActiveSheet.Range("B1).Value=""

Mein Dokument besteht aber aus mehreren Blättern. Wie kann ich auch die anderen Tabellen hinzufügen, sodass alle Filter in allen Tabellen zurücksetzt werden?

Danke!
Seiten: 1 2 3