VBA Protect / Unprotect Arbeitsblätter

In diesem Tutorial erfahren Sie alles über den Schutz von Excel-Arbeitsblättern in VBA - So schützen oder entschützen Sie Arbeitsblätter in Excel.

Excel-Arbeitsblatt ohne Passwort schützen

Um den Schutz eines nicht kennwortgeschützten Arbeitsblatts aufzuheben, verwenden Sie diese einfache Codezeile:

1 Worksheets("Blatt1").Schutz aufheben

Excel-Arbeitsblatt mit Passwort schützen

Um den Schutz eines kennwortgeschützten Arbeitsblatts aufzuheben, müssen Sie auch das Kennwort eingeben:

1 Worksheets("Sheet1").Schutz für "Passwort" aufheben

Blattschutz aufheben - Passwort vergessen

Um den Schutz eines Arbeitsblatts aufzuheben, ohne das Kennwort zu kennen, müssen Sie ein Add-In zur Kennwortwiederherstellung verwenden.

Arbeitsblätter schützen

Mit dem Arbeitsblattschutz können Sie bestimmte Aspekte des Blatts für die Bearbeitung sperren.

Dieses Menü finden Sie in Home > Format > Blatt schützen oder indem Sie mit der rechten Maustaste auf den Namen der Registerkarte Blatt klicken:

Am häufigsten wird dies verwendet, um „gesperrte“ Zellen vor der Bearbeitung zu schützen, sodass der Endbenutzer nur bestimmte Zellen bearbeiten kann.

Sie können Zellen sperren, indem Sie sie auswählen und das Registerkarte Schutz des Zellformatierungsmenü (STRG + 1).

Sie können auch verhindern, dass der Benutzer die Arbeitsblattstruktur ändert (Einfügen, Löschen oder Ändern der Größe von Zeilen und Spalten) oder die Interaktion mit AutoFiltern und vieles mehr.

Arbeitsblatt schützen - ohne Passwort

Möglicherweise möchten Sie ein Arbeitsblatt schützen, ohne ein Kennwort einzugeben. Dies verhindert versehentliche Änderungen am Arbeitsblatt und gibt dem Benutzer gleichzeitig Zugriff, um bei Bedarf Änderungen vorzunehmen.

1 Worksheets("Blatt1").Schützen

Arbeitsblatt schützen - Passwortschutz

1 Worksheets("Sheet1").Schützen Sie "Passwort"

Arbeitsblatteinstellungen schützen

Die obigen Beispiele schützen Arbeitsblätter mit den Standardschutzeinstellungen. Stattdessen möchten Sie vielleicht anpassen, was geschützt wird:

12345 Worksheets("Sheet1").Protect Password:=strPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _UserInterfaceOnly:=True, AllowFormattingCells:=False, AllowFormattingColumns:=False, _AllowFormattingRows:=False, AllowInsertingColumns:=False, AllowInsertingRows:=False, _AllowInsertingHyperlinks:=False, AllowDeletingColumns:=False, AllowDeletingRows:=False, _AllowSorting:=False, AllowFiltering:=False, AllowUsingPivotTables:=False

Anstatt die obige Syntax zu verwenden, empfehle ich, ein Makro mit Ihren gewünschten Einstellungen (ausgewählt über das Menü Arbeitsblattschutz oben) aufzuzeichnen und den aufgezeichneten Code in Ihre Prozedur zu kopieren und einzufügen.

Blatt schützen - Änderungen durch VBA zulassen

Wenn Sie ein Blatt schützen, gilt der Schutz standardmäßig zusätzlich zu Benutzeraktionen für VBA-Vorgänge. Wenn VBA versucht, eine gesperrte Zelle zu ändern, wird ein Laufzeitfehler 1004 angezeigt. Um dies zu vermeiden, können Sie Ihre Arbeitsblätter aufheben und erneut schützen, wenn VBA mit ihnen interagieren muss:

123456789 Unter Edit_Sheet1()'Schutz für Blatt1 aufhebenWorksheets("Blatt1").Schutz aufheben'Machen Sie etwas mit Sheet1'Blatt1 erneut schützenWorksheets("Blatt1").SchützenEnd Sub

Es ist jedoch leicht zu vergessen, den Schutz Ihrer Arbeitsblätter aufzuheben und/oder erneut zu schützen. Dies kann die Wahrscheinlichkeit eines Codierungsfehlers erhöhen.

Stattdessen können Sie die UserInterFaceOnly-Einstellung verwenden. Bei TRUE werden Arbeitsblätter NUR vor Benutzern geschützt, NICHT vor VBA.Ihr VBA-Code kann das Arbeitsblatt kostenlos bearbeiten, als ob es entsperrt wäre.

Zwei wichtige Punkte zu UserInterFaceOnly:

  • Diese Einstellung ist im Menü Arbeitsblattschutz (siehe oben) nicht verfügbar. Dies ist eine Einstellung, die in VBA definiert werden muss.
  • Die Einstellung wird nicht gespeichert, wenn Sie eine Arbeitsmappe schließen. Sie muss jedes Mal neu definiert werden, wenn eine Arbeitsmappe geöffnet wird.

Um die UserInterFaceOnly-Eigenschaft festzulegen, sollten Sie die folgende Workbook_Open-Ereignisprozedur im Modul ThisWorkbook platzieren:

1234567 Private Unterarbeitsmappe_Open()Dim ws als ArbeitsblattFür jedes ws in ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly:=TrueNächstes wsEnd Sub

Workbook_Open ist eine spezielle Ereignisprozedur, die jedes Mal ausgeführt wird, wenn die Arbeitsmappe geöffnet ist. Es muss im Modul DieseArbeitsmappe platziert werden. Alternativ können Sie die Ereignisprozedur Auto_Open verwenden (hier nicht behandelt).

Makro für alle Tabellenblätter aufheben

Dieses Makro hebt den Schutz aller Blätter in einer Arbeitsmappe auf:

123456789 ' Schutz aller Arbeitsblätter aufhebenUnter UnProtectAllSheets()Dim ws als ArbeitsblattFür jedes ws in Arbeitsblätternws.Schutz "Passwort" aufhebenNächstes wsEnd Sub

Makro für alle Blätter schützen

Dieses Makro schützt alle Blätter in einer Arbeitsmappe:

123456789 'Alle Arbeitsblätter schützenUnter ProtectAllSheets()Dim ws als ArbeitsblattFür jedes ws in Arbeitsblätternws.Protect "Passwort"Nächstes wsEnd Sub

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave