00202
Nicht registrierter Gast
Hallo, :19: prinzipiell so: :21: Code: Dim wksSheet As Worksheet For Each wksSheet In ThisWorkbook.Worksheets If wksSheet.FilterMode Then wksSheet.ShowAllData Next wksSheet
Registriert seit: 06.01.2018
Version(en): 2013
Hallo, ich habe in "DieseArbeitsmappe" den folgenden Code eingetragen: Code: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim wksSheet As Worksheet For Each wksSheet In ThisWorkbook.Worksheets If wksSheet.FilterMode Then wksSheet.ShowAllData Next wksSheet End Sub
Das funktioniert auch beim ersten Tabellenblatt. Die anderen bleiben aber weiterhin gefiltert. In der Microsoft Visual Basic Ansicht ist mir aber aufgefallen, dass ich zum Teil Sheet1, Sheet2 etc, aber auch Tabelle1, Tabelle2 etc. habe. Ich denke mein Problem hat damit zu tun, da Tabelle1 und Tabelle2 gefiltert bleiben.
Registriert seit: 02.12.2017
Version(en): Office 365
14.08.2018, 16:20
(Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2018, 16:20 von Frogger1986.)
Versuche mal das.. Gehe den code in einem normalen Modul mit f8 schrittweise durch: (Ungetestet) Code: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For Each sheet In sheets If Sheet.FilterMode Then Sheet.ShowAllData End if Next End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
mal noch zur Erklärung. Damit
For Each wksSheet In ThisWorkbook.Worksheets
gehst Du durch jedes Tabellenblatt, egal, wie es heißt.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 06.01.2018
Version(en): 2013
Hallo, ich sitze immernoch dran und bekomme es einfach nicht hin. Aktuell ist ein Blattschutz drin, was das Filtern blockiert. Daher mein Gedanke bei BeforeSave: - Blattschutz bei allen Blättern entfernen
- Filter auf allen Blättern löschen
- Blattschutz bei allen Blättern / oder bei bestimmten Blättern aktivieren
Folgendes habe ich versucht: Code: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For i = 1 To Worksheets.Count Worksheets(i).Unprotect Password:="" Next Application.ScreenUpdating = True
For Each Sheet In Sheets If Sheet.FilterMode Then Sheet.ShowAllData End If Next
Dim sh As Long For sh = 1 To Sheets.Count With Sheets(sh) .Protect UserInterfaceOnly:=True, _ DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowFormattingCells:=True, AllowFormattingRows:=True, _ AllowInsertingRows:=True, AllowDeletingRows:=True, _ AllowFiltering:=True, AllowSorting:=True, _ Password:="" .EnableOutlining = True 'für Gliederung .EnableAutoFilter = True 'für Autofilter End With Next
End Sub
Leider wird der Filter nur auf dem aktiven Blatt deaktiviert und nicht auf allen Blättern :(
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, Zitat:Leider wird der Filter nur auf dem aktiven Blatt deaktiviert und nicht auf allen Blättern :( mache eine Schleife über alle Tabellenblätter und schalte die Filter hier aus
Registriert seit: 03.10.2018
Version(en): 2010 ProPlus / 2016 ProPlus
Hallo, @Blaubär: Noch eine dritte Schleife ? Er hat doch schon zwei davon !!! Code: For i = 1 To Worksheets.Count Worksheets(i).Unprotect Password:="" Next Application.ScreenUpdating = True
For Each Sheet In Sheets If Sheet.FilterMode Then Sheet.ShowAllData End If Next
Da reicht doch schon eine ... Code: For i = 1 To Worksheets.Count With Worksheets(i) .Unprotect Password:="" If .FilterMode Then .ShowAllData End With
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
13.11.2018, 16:08
(Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2018, 16:09 von Käpt'n Blaubär.)
Hallo flotter Feger,
sind Schleifen eine Rarität? Das habe ich nicht gewußt, sorry.
Vielleicht geht es dann, wenn man(n) mehrere Schleifen zu einer verwurstet. Jedenfalls muß er für sein Vorhaben ohnehin in jedes Blatt.
Registriert seit: 06.01.2018
Version(en): 2013
Hallo, ich habe es nun mit folgendem Code probiert. Das Problem ist, dass lediglich der Filter in der aktiven Tabelle deaktiviert wird. Die Tabellen in den anderen Blättern bleiben sortiert. Ebenso bleibt der Filter in der Tabelle auf dem aktiven Blatt aktiv, wenn beim Speichern eine Zelle außerhalb der Tabelle markiert ist. Code: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For i = 1 To Worksheets.Count With Worksheets(i) .Unprotect Password:="" If .FilterMode Then .ShowAllData End With Next For i = 1 To Worksheets.Count With Worksheets(i) .Protect UserInterfaceOnly:=True, _ DrawingObjects:=True, Contents:=True, Scenarios:=True, _ AllowFormattingCells:=True, AllowFormattingRows:=True, _ AllowInsertingRows:=True, AllowDeletingRows:=True, _ AllowFiltering:=True, AllowSorting:=True, _ Password:="" .EnableOutlining = True 'für Gliederung .EnableAutoFilter = True 'für Autofilter End With Next
End Sub
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, Zitat:Das Problem ist, dass lediglich der Filter in der aktiven Tabelle deaktiviert wird. ... drum ja auch mein Vorschlag
|