Excel VBA Tutorial: Tabellenblätter SCHÜTZEN und ENTSPERREN (Protect & Unprotect)

Melden

Hier ist ein ausführliches Tutorial, wie du Tabellenblätter in Excel mithilfe von VBA (Visual Basic for Applications) schützen und wieder entsperren kannst.


In Excel ist der Blattschutz ein wichtiges Werkzeug, um Formeln vor dem Löschen zu bewahren oder das Layout einer Tabelle zu sichern. Wenn du jedoch Makros nutzt, müssen diese oft Daten in geschützte Bereiche schreiben. In diesem Tutorial lernst du, wie du den Schutz per Code steuerst.

1. Die Grundlagen: Einfaches Schützen und Entsperren

Der einfachste Weg, ein Blatt zu schützen oder freizugeben, erfolgt über die Methoden .Protect und .Unprotect.

Tabellenblatt schützen

Sub BlattSchuetzen()
    ' Schützt das aktive Tabellenblatt
    ActiveSheet.Protect
End Sub

Tabellenblatt entsperren

Sub BlattEntsperren()
    ' Hebt den Schutz des aktiven Tabellenblatts auf
    ActiveSheet.Unprotect
End Sub

2. Schutz mit Passwort vergeben

Ein Schutz ohne Passwort kann von jedem Benutzer einfach über das Menü "Überprüfen" aufgehoben werden. Um dies zu verhindern, fügen wir ein Passwort hinzu.

Mit Passwort schützen

Sub BlattSchuetzenMitPasswort()
    Worksheets("Tabelle1").Protect Password:="MeinPasswort123"
End Sub

Mit Passwort entsperren

Sub BlattEntsperrenMitPasswort()
    Worksheets("Tabelle1").Unprotect Password:="MeinPasswort123"
End Sub

Wichtig: Wenn das Passwort im VBA-Code steht, solltest du auch das VBA-Projekt mit einem Passwort schützen (Extras -> Eigenschaften von VBAProject -> Schutz), damit niemand das Passwort im Code lesen kann.


3. Erweiterte Optionen (Sortieren, Filtern etc. erlauben)

Beim Schützen eines Blattes kannst du festlegen, was der Benutzer trotz Schutz noch tun darf (z.B. Zellen formatieren oder Autofilter nutzen).

Sub ErweiterterSchutz()
    Worksheets("Tabelle1").Protect _
        Password:="123", _
        DrawingObjects:=True, _
        Contents:=True, _
        Scenarios:=True, _
        AllowFormattingCells:=True, _
        AllowFiltering:=True
End Sub

4. Der Profi-Tipp: UserInterfaceOnly

Dies ist die wichtigste Funktion für VBA-Entwickler. Sie ermöglicht es, das Blatt für den Benutzer zu sperren, aber für VBA-Makros freizuhalten. So musst du den Schutz nicht jedes Mal mühsam per Code aufheben und wieder setzen.

Sub SchutzFuerUserAberNichtFuerVBA()
    ' UserInterfaceOnly:=True erlaubt Makros Änderungen, sperrt sie aber für den Nutzer
    Worksheets("Tabelle1").Protect Password:="123", UserInterfaceOnly:=True
End Sub

Hinweis: Diese Einstellung wird beim Schließen der Datei nicht gespeichert und muss beim Öffnen der Datei (z.B. im Workbook_Open Ereignis) erneut gesetzt werden.


5. Alle Tabellenblätter gleichzeitig schützen/entsperren

Wenn deine Datei viele Blätter hat, kannst du eine Schleife verwenden:

Sub AlleBlaetterSchuetzen()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Protect Password:="Sicher"
    Next ws
    MsgBox "Alle Blätter wurden geschützt!"
End Sub

Sub AlleBlaetterEntsperren()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Unprotect Password:="Sicher"
    Next ws
    MsgBox "Schutz für alle Blätter aufgehoben!"
End Sub

Schritt-für-Schritt Anleitung zur Implementierung

  1. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Gehe auf Einfügen -> Modul.
  3. Kopiere einen der obigen Codes in das neue Modulfenster.
  4. Passe den Namen des Tabellenblatts (z.B. "Tabelle1") und das Passwort an.
  5. Drücke F5 zum Ausführen oder verknüpfe das Makro mit einer Schaltfläche in deiner Excel-Tabelle.

Zusammenfassung der Parameter

  • Password: Das Passwort als String.
  • DrawingObjects: Schützt Formen und Grafiken (True/False).
  • Contents: Schützt den Inhalt der Zellen (True/False).
  • UserInterfaceOnly: Erlaubt Makros den Zugriff trotz Schutz (True).

Viel Erfolg bei der Automatisierung deiner Excel-Dateien!

0