Excel VBA Tutorial: Tabellenblätter SCHÜTZEN und ENTSPERREN (Protect & Unprotect)
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
- Drücke
ALT+F11, um den VBA-Editor zu öffnen. - Gehe auf
Einfügen->Modul. - Kopiere einen der obigen Codes in das neue Modulfenster.
- Passe den Namen des Tabellenblatts (z.B.
"Tabelle1") und das Passwort an. - Drücke
F5zum 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!