Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro Filter zurücksetzen trotz Passwortschutz

Makro Filter zurücksetzen trotz Passwortschutz
08.07.2015 08:10:01
Marco
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

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Filter zurücksetzen trotz Passwortschutz
09.07.2015 01:26:16
fcs
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

Anzeige
AW: Makro Filter zurücksetzen trotz Passwortschutz
09.07.2015 06:46:39
Marco
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

Anzeige
AW: Makro Filter zurücksetzen trotz Passwortschutz
09.07.2015 21:30:16
fcs
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

Anzeige
AW: Makro Filter zurücksetzen trotz Passwortschutz
10.07.2015 06:07:30
Marco
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

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro zum Zurücksetzen von Filtern in Excel trotz Passwortschutz


Schritt-für-Schritt-Anleitung

  1. Excel öffnen und VBA-Editor starten: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Das entsprechende Workbook auswählen: Wähle im Projektfenster das Workbook aus, in dem du das Makro erstellen möchtest.

  3. Ein neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "Microsoft Excel Objekte" und wähle "Modul einfügen".

  4. Makro-Code eingeben: Kopiere den folgenden VBA-Code in das Modul:

    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
  5. Makro speichern: Schließe den VBA-Editor und speichere dein Workbook als Makro-fähige Datei (*.xlsm).

  6. Vergiss nicht das Passwort anzupassen: Ersetze "Mein Passwort" mit deinem tatsächlichen Passwort.


Häufige Fehler und Lösungen

  • Fehler beim Speichern: Stelle sicher, dass du die Datei als Makro-fähige Excel-Datei speicherst. Andernfalls wird das Makro nicht funktionieren.

  • Filter werden nicht zurückgesetzt: Überprüfe, ob die Spalte, die du nicht zurücksetzen möchtest (in diesem Fall Spalte I), korrekt im Code angegeben ist.

  • Schutzverlust der Freigaben: Achte darauf, dass du die richtigen Parameter für den Blattschutz angibst, um sicherzustellen, dass Nutzer weiterhin mit der Tabelle arbeiten können.


Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch manuell die Filter zurücksetzen:

  1. Klicke auf den Filter-Button in der Spalte, die du zurücksetzen möchtest.
  2. Wähle „Alle auswählen“ und bestätige mit „OK“.
  3. Du kannst auch die Filteroption „Filter löschen“ verwenden, um alle Filter zurückzusetzen.

Praktische Beispiele

  • Alle Filter zurücksetzen: Nutze das Makro, um beim Schließen der Excel-Datei alle Filter zurückzusetzen, außer dem Filter in Spalte I.

  • Excel-Filter automatisch zurücksetzen: Mit dem oben genannten Makro kannst du sicherstellen, dass die Filter beim Schließen der Datei immer zurückgesetzt werden.


Tipps für Profis

  • Verwende die Option AllowFiltering im Blattschutz, um sicherzustellen, dass Nutzer die Filter weiterhin anwenden können.

  • Du kannst das Makro anpassen, um nur bestimmte Filter zurückzusetzen, indem du die Select Case-Anweisung im VBA-Code modifizierst.

  • Teste das Makro gründlich, um sicherzustellen, dass es alle gewünschten Filter korrekt zurücksetzt, bevor du es in einer produktiven Umgebung verwendest.


FAQ: Häufige Fragen

1. Wie kann ich das Passwort im Makro ändern?
Du kannst das Passwort einfach im Code anpassen, indem du den Text "Mein Passwort" durch dein neues Passwort ersetzt.

2. Was passiert, wenn ich das Makro nicht speichere?
Wenn du die Datei nicht als Makro-fähige Excel-Datei speicherst, wird das Makro nicht verfügbar sein, und du kannst es nicht ausführen.

3. Kann ich das Makro in einer älteren Excel-Version verwenden?
Ja, das Makro ist mit Excel 2007 und höher kompatibel. Achte darauf, dass die VBA-Umgebung in deiner Excel-Version verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige