Makro Filter zurücksetzen trotz Passwortschutz

Bild

Betrifft: Makro Filter zurücksetzen trotz Passwortschutz
von: Marco Pech
Geschrieben am: 08.07.2015 08:10:01

Hallo zusammen,
Ich bin zwar kein Excel Neuling, konnte aber im Bereich von VBAs noch kaum Erfahrungen sammeln.
ich habe folgendes Anliegen:
Ich habe ein geschütztes Blatt. Es gibt mehrere Spalten in denen nach Inhalten gefiltert werden kann. Ich möchte nun, dass diese Filter vor dem Schließen der Liste jedes mal zurückgesetzt werden. Hierfür muss der Blattschutz (mit Passwort) außer Kraft gesetzt werden. Das alles hab ich durch Forums-Recherche mehr oder weniger gut hinbekommen.
Option Explicit


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveSheet.Unprotect "Mein Passwort"
Dim wksBlatt As Worksheet
For Each wksBlatt In ThisWorkbook.Worksheets
If wksBlatt.FilterMode Then wksBlatt.ShowAllData
Next wksBlatt
ActiveSheet.Protect "Mein Passwort"
ThisWorkbook.Save
End Sub

Ich habe aber noch zwei Probleme:
1. Wenn das Makro das Passwort wieder vergibt und das Blatt schützt, gehen meine Freigaben (Nutzer dürfen: Gesperrte Zellen auswählen, Nicht gesperrte Zellen auswählen, Zeilen einfügen, Sortieren, AutoFilter verwenden) verloren, sodass die Haken entfernt werden und der nächste der die Liste öffnet kann die Tabelle nicht mehr wirklich nutzen kann.
2. Außerdem sollen alle AutoFilter zurückgesetzt werden bis auf der in Spalte I.
Schon mal vielen Dank für eure Antworten!
Grüße,
Marco

Bild

Betrifft: AW: Makro Filter zurücksetzen trotz Passwortschutz
von: fcs
Geschrieben am: 09.07.2015 01:26:16
Hallo Marco,
das sollte dann etwa so funktionieren:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim wksBlatt As Worksheet
    Dim intFilter As Integer
    For Each wksBlatt In ThisWorkbook.Worksheets
        wksBlatt.Unprotect "Mein Passwort"
        If wksBlatt.FilterMode Then
            For intFilter = 2 To wksBlatt.AutoFilter.Filters.Count
                If wksBlatt.AutoFilter.Filters(intFilter).On = True Then
                    wksBlatt.AutoFilter.Range.AutoFilter Field:=intFilter
                End If
            Next
        End If
        wksBlatt.Protect "Mein Passwort", Contents:=True, Scenarios:=True, _
            AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True
    Next wksBlatt
    ThisWorkbook.Save
End Sub
Gruß
Franz

Bild

Betrifft: AW: Makro Filter zurücksetzen trotz Passwortschutz
von: Marco Pech
Geschrieben am: 09.07.2015 06:46:39
Vielen Dank für die schnelle Antwort!
Der Code funktioniert fast perfekt, einziges Manko, nicht der Filter von Spalte "I" wird nicht zurück gesetzt, sondern der von Spalte "B". Bin etwas zu unbeholfen um herauszufinden wo und wie ich die Auswahl des Spaltenfilters im VBA finde.
Grüße,
Marco

Bild

Betrifft: AW: Makro Filter zurücksetzen trotz Passwortschutz
von: fcs
Geschrieben am: 09.07.2015 21:30:16
Hallo Marco,
die Zählung der Filter beginnt beim Autofilter in der linken Spalte des Autofilterbereiches mit 1.
Wenn der Autofilterbereich nicht in Spalte A beginnt, und andere Filter als der 1. Filter nicht zurückgesetzt werden sollen, dann wird es etwas komplizierter.
Gruß
Franz

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim wksBlatt As Worksheet
    Dim intFilter As Integer, Spalte As Long, Spalte_1 As Long
    For Each wksBlatt In ThisWorkbook.Worksheets
        wksBlatt.Unprotect "Mein Passwort"
        If wksBlatt.FilterMode Then
            Spalte_1 = wksBlatt.AutoFilter.Range.Column
            For intFilter = 1 To wksBlatt.AutoFilter.Filters.Count
                Spalte = Spalte_1 + intFilter - 1
                Select Case Spalte
                    Case 9  'Spalte I
                        'do nothing
                    Case Else
                        If wksBlatt.AutoFilter.Filters(intFilter).On = True Then
                            wksBlatt.AutoFilter.Range.AutoFilter Field:=intFilter
                        End If
                End Select
            Next
        End If
        wksBlatt.Protect "Mein Passwort", Contents:=True, Scenarios:=True, _
            AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True
    Next wksBlatt
    ThisWorkbook.Save
End Sub


Bild

Betrifft: AW: Makro Filter zurücksetzen trotz Passwortschutz
von: Marco Pech
Geschrieben am: 10.07.2015 06:07:30
Hallo Franz,
Auf dieses Makro wäre ich in 1000 kalten Wintern nicht gekommen...
Funktioniert einwandfrei! Macht genau, was es soll!
Riesen Dank!
Grüße,
Marco

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro Filter zurücksetzen trotz Passwortschutz"