Wer öfters mal Excel-Tabellen mit Kunden tauscht, und Kunden nur bestimmte Zellen zur Bearbeitung zur Verfügung stellen will, kommt um den Blattschutz von Excel nicht herum. 

Zellen mit bestimmten Formatierungen von Sperrung ausnehmen

Das Problem dabei ist, dass man Excel vorher mitteilen muss, welche Zellen man nicht geschützt haben will, die also vom Kunden oder Geschäftspartner editiert werden dürfen. Für gewöhnlich haben die nicht zu sperrenden Zellen ähnliche Eigenschaften. Beispielsweise die selbe Formatierung. Ich beispielsweise formatiere die Zellen, in denen eingegeben werden soll immer als Eingabe.

Will man nun alle Tabellenblätter mit allen Zellen, mal abgesehen von den als Eingabe formatierten sperren, könnte man folgenden VBA-Code verwenden.

Erläuterung des Codes:

  • Die Prozedur Arbeitsmappe_sperren sperrt alle Arbeitsblätter in der aktiven Arbeitsmappe mit einem vom Benutzer eingegebenen Passwort.
  • Zuerst wird das Passwort über ein Eingabefenster abgefragt.
  • Die Prozedur durchläuft dann jedes Arbeitsblatt und jede Zelle in deren benutzten Bereichen.
  • Zellen mit dem Stil „Eingabe“ werden entsperrt, sodass Benutzer weiterhin Eingaben vornehmen können.
  • Alle anderen Zellen werden gesperrt, um zu verhindern, dass sie bearbeitet werden.
  • Anschließend wird jedes Arbeitsblatt mit dem eingegebenen Passwort geschützt.
  • Die Bildschirmaktualisierung wird während der Ausführung deaktiviert und am Ende wieder aktiviert, um die Ausführung zu beschleunigen und ein Flackern des Bildschirms zu vermeiden.

nur Zellen mit Formeln sperren

Das kann man natürlich auch auf andere Eigenschaften der Zelle ändern. Sinnvoll erscheint es beispielsweise alle Zellen, die Formeln enthalten zu sperren, und alle anderen nicht. 

Erläuterung des Codes:

  • Die Prozedur Arbeitsmappe_sperren sperrt alle Arbeitsblätter in der aktiven Arbeitsmappe mit einem vom Benutzer eingegebenen Passwort.
  • Zuerst wird das Passwort über ein Eingabefenster abgefragt.
  • Die Prozedur durchläuft dann jedes Arbeitsblatt. Wenn ein Arbeitsblatt nicht bereits geschützt ist, wird jede Zelle in deren benutzten Bereichen überprüft.
  • Zellen ohne Formeln werden entsperrt, während Zellen mit Formeln gesperrt werden, um zu verhindern, dass sie bearbeitet werden.
  • Anschließend wird jedes Arbeitsblatt mit dem eingegebenen Passwort geschützt.
  • Die Bildschirmaktualisierung wird während der Ausführung deaktiviert und am Ende wieder aktiviert.

Kommentare trotzdem zulassen

Häufig ist es sinnvoll, den Geschäftspartnern wenigstens die Kommentarfunktion für die entsprechenden Zellen zu erlauben. Dafür ändert man die Protect-Anweisung folgendermaßen:

Erläuterung des Codes:

  • wks.Protect: Diese Methode schützt das aktuelle Arbeitsblatt (wks).
    • Password:=strPassword: Setzt das Passwort zum Schutz des Arbeitsblatts.
    • DrawingObjects:=False: Zeichnungsobjekte auf dem Arbeitsblatt werden nicht geschützt, was bedeutet, dass sie auch nach dem Schützen des Blattes verändert werden können.
    • Contents:=True: Der Inhalt des Arbeitsblatts wird geschützt, sodass keine Änderungen an den Zellen vorgenommen werden können.
    • Scenarios:=True: Auch erstellte Szenarien auf dem Arbeitsblatt werden geschützt.
  • wks.EnableSelection = xlNoRestrictions: Diese Einstellung erlaubt dem Benutzer, trotz des Schutzes, alle Zellen auf dem Arbeitsblatt auszuwählen. Beachten Sie, dass dies nicht bedeutet, dass die Zellen bearbeitet werden können; es erlaubt nur ihre Auswahl.

Sicherheit des Passwortschutzes

Der Blattschutz ist keine sonderlich sichere Sache, da er nur den Zweck verfolgt, versehentliches Überschreiben zu verhindern. Das macht er aber sehr zuverlässig. Ein kleines Tool, um den Blattschutz zu entfernen stelle ich hier zur Verfügung.