Registriert seit: 30.08.2014
Version(en): Office 365 - Beta 32 Bit
Hallo, :19:
prinzipiell so: :21:
Code: Dim wksSheet As Worksheet
For Each wksSheet In ThisWorkbook.Worksheets
If wksSheet.FilterMode Then wksSheet.ShowAllData
Next wksSheet
________
Servus
Case
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, 15:20
(Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2018, 15: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
Eine Menge reden, aber nichts sagen können viele...
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
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
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
VG Sabina
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
13.11.2018, 15:08
(Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2018, 15: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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
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
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
|