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

Forumthread: Makro Blattschutz Optionen

Makro Blattschutz Optionen
03.07.2013 11:56:48
Thms
Hallo Forum!
Ich habe folgendes Makro zum Sperren/Entsperren meiner Tabellenblätter:
Option Explicit
Sub Schutz()
Dim i As Long
For i = 1 To Sheets.Count
If Sheets(i).Visible Then
Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, Password:="123"
End If
Next i
MsgBox "alle Blätter wurden geschützt"
End Sub
Sub Aufheben()
Dim i As Long
Dim p1 As String
Dim p2 As String
p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
If p1 = "" Then
MsgBox "Kein Passwort eingegeben!" & vbLf & vbLf & "Blattschutz wird nicht nicht  _
aufgehoben!"
Exit Sub
End If
On Error GoTo fehler
For i = 1 To Sheets.Count
Sheets(i).Unprotect p1
Next i
MsgBox "alle Blätter wurden entsperrt"
fehler:
If Err Then MsgBox "Falsches Passwort"
End Sub
Jetzt ist es leider so, dass ich zusätzlich gruppierte Daten habe. Damit man die Gruppierung in einem geschützten Blatt verwenden kann, habe ich zusätzlich folgende Makro Befehle gefunden:
Sheets(i).Protect userinterfaceonly:=True, Password:="123"
Sheets(i).EnableOutlining = True 'für Gliederung
Sheets(i).EnableAutoFilter = True 'für Autofilter
Ich würde diese Befehle gerne gleich in mein oberes "Schutzmakro" einbauen. D.h. die bereits vorhanden Optionen im geschützten Blatt müssten noch um die der Gruppierung erweitert werden. Ich habe mich daran versucht, aber es leider nie hinbekommen dass alle Optionen funktionieren. Evtl. könnte mir das jemand kurz richtig einfügen?
Wäre sehr nett!
Beste Grüße
Thomas

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Blattschutz Optionen
03.07.2013 13:16:21
fcs
Hallo Thomas,
mit folgenden Anpassungen sollte es möglich sein in einem geschützten Blatt die Gliederung bzw, die Autofilter-Dropdowns zu benutzen.
Sub Schutz()
Dim i As Long
For i = 1 To Sheets.Count
If Sheets(i).Visible Then
Sheets(i).EnableAutoFilter = True 'für Autofilter
Sheets(i).EnableOutlining = True 'für Gliederung
Sheets(i).Protect userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, _
AllowInsertingRows:=True, AllowFiltering:=True, Password:="123"
End If
Next i
MsgBox "alle Blätter wurden geschützt"
End Sub

Das Problem ist jedoch, das diese beiden Einstellungen flüchtig sind und nicht gespeichert werden.
Damit die Einstellungen aktiv werden muss dein Schutzmakro nach dem Öffnen der Datei ausgeführt werden.
Unter DieseArbeitsmappe der Datei muss du zusätzlich folgendes Makro einrichten, damit das Schutzmakro automatisch beim Öffnen der Datei ausgeführt wird.
Private Sub Workbook_Open()
Call Schutz
End Sub
Gruß
Franz

Anzeige
AW: Makro Blattschutz Optionen
03.07.2013 13:29:37
Thms
Hallo Franz,
Super! Herzlichen Dank für Deine Hilfe!
Beste Grüße
Thomas
;
Anzeige
Anzeige

Infobox / Tutorial

Blattschutz mit VBA in Excel: Optionen und Makros


Schritt-für-Schritt-Anleitung

Um den Blattschutz in Excel mit VBA zu setzen und gleichzeitig bestimmte Optionen zu aktivieren, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Ein neues Modul erstellen:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsm) und wähle Einfügen > Modul.
  3. Das Schutzmakro einfügen:

    • Kopiere und füge den folgenden Code in das Modul ein:
    Option Explicit
    Sub Schutz()
       Dim i As Long
       For i = 1 To Sheets.Count
           If Sheets(i).Visible Then
               Sheets(i).EnableAutoFilter = True 'für Autofilter
               Sheets(i).EnableOutlining = True 'für Gliederung
               Sheets(i).Protect userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, _
               Scenarios:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
               AllowFormattingRows:=True, AllowInsertingColumns:=True, _
               AllowInsertingRows:=True, AllowFiltering:=True, Password:="123"
           End If
       Next i
       MsgBox "Alle Blätter wurden geschützt"
    End Sub
  4. Automatisches Ausführen beim Öffnen:

    • Um das Makro automatisch beim Öffnen der Datei auszuführen, füge den folgenden Code unter DieseArbeitsmappe ein:
    Private Sub Workbook_Open()
       Call Schutz
    End Sub
  5. Speichere die Datei:

    • Speichere die Datei als Excel-Arbeitsmappe mit Makros (*.xlsm).

Häufige Fehler und Lösungen

  • Problem: Blattschutz wird nicht aktiviert
    Lösung: Stelle sicher, dass Du das Makro Schutz aufrufst, indem Du das Workbook_Open-Ereignis korrekt eingerichtet hast.

  • Problem: Autofilter und Gliederung verschwinden nach dem Schließen
    Lösung: Der Code userinterfaceonly:=True sorgt dafür, dass der Blattschutz die Benutzeroberfläche nicht blockiert, aber Du musst das Schutzmakro bei jedem Öffnen der Datei ausführen.


Alternative Methoden

Wenn Du den Blattschutz ohne VBA setzen möchtest, kannst Du dies auch manuell tun:

  1. Wähle das Blatt aus, das Du schützen möchtest.
  2. Gehe zu Überprüfen > Blatt schützen.
  3. Aktiviere die gewünschten Optionen im Dialogfeld und setze ein Passwort.

Mit dieser Methode sind jedoch die erweiterten Optionen wie EnableAutoFilter und EnableOutlining nicht verfügbar.


Praktische Beispiele

Hier sind zwei praktische Beispiele, wie Du den Blattschutz in Excel VBA nutzen kannst:

  1. Einzeln Blätter schützen: Verwende das gleiche Makro, aber ändere die Schleife so, dass es nur ein bestimmtes Blatt schützt:

    Sheets("DeinBlattname").Protect Password:="123"
  2. Blattschutz aufheben: Um den Blattschutz aufzuheben, kannst Du folgendes Makro verwenden:

    Sub Aufheben()
       Dim p1 As String
       p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
       If p1 <> "" Then
           Sheets("DeinBlattname").Unprotect p1
           MsgBox "Blattschutz wurde aufgehoben"
       Else
           MsgBox "Kein Passwort eingegeben!"
       End If
    End Sub

Tipps für Profis

  • Verwende starke Passwörter: Achte darauf, ein starkes Passwort für den Blattschutz zu wählen, um Deine Daten zu sichern.
  • Makros testen: Teste Deine Makros in einer Kopie der Datei, bevor Du sie in der Originaldatei anwendest.
  • Dokumentation: Halte Deinen Code dokumentiert, um später Anpassungen vorzunehmen.

FAQ: Häufige Fragen

1. Wie setze ich den Blattschutz in Excel VBA?
Du kannst den Blattschutz mit dem Protect-Befehl in VBA aktivieren, indem Du die gewünschten Parameter angibst.

2. Was bedeutet userinterfaceonly im Blattschutz?
Diese Option ermöglicht es, dass der Blattschutz die Benutzeroberfläche nicht blockiert, sodass bestimmte Funktionen (wie Autofilter) weiterhin verwendet werden können.

3. Kann ich mehrere Blätter gleichzeitig schützen?
Ja, indem Du eine Schleife über alle Blätter in Deiner Arbeitsmappe erstellst, kannst Du alle Blätter gleichzeitig schützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige