Zellen mit Formeln schützen

Nehmen wir an, Du möchtest ein Spesenformular generieren. Unbedingt vorhanden sein muss eine Kilometerabrechnung für Fahrten mit einem Privatwagen sowie unterschiedliche Mehrwertsteuersätze. Im besten Fall werden solche Berechnungen direkt im Formular hinterlegt, ohne dass der Benutzer viel überlegen und selbst kalkulieren muss - somit reduzierst Du potentielle Fehler im Vornherein. Ob man dadurch gewisse Checks vernachlässigt und etwas übersieht, das ist ein ganz anderes Thema. Wie dem auch sei: Da an allen Formeln nichts mehr geändert werden soll, wollen wir diese Zellen spezifisch schützen. Dazu gehst Du wie folgt vor:

  • Markiere zuerst Dein gesamtes Tabellenblatt ("CTRL + A" oder im linken oberen Rand neben Spalte A und Zeile 1) und gehe mittels Rechtsklick in die Optionen "Zellen formatieren". Unter dem Register "Schutz" kannst Du zunächst für sämtliche Zellen das "Gesperrt" entfernen:

ZellenFormatierenGesperrt

  • Als Nächstes stelle bitte sicher, dass nach wie vor alle Zellen markiert sind. Gehe dann mittels "CTRL + G" in den "Gehe zu ..."-Dialog und dort auf "Inhalte..." (alternativ kannst Du mit der Maus via "Start" → "Suchen und Auswählen" → "Inhalte auswählen" dorthin gelangen. Wähle die Option "Formeln" aus und klicke auf OK. Nun sind in Deinem gesamten Tabellenblatt alle Zellen mit Formeln selektiert worden.

InhalteFormeln

  • Gehe wie in Schritt 1 erneut in die Zellenformatierung (das geht übrigens auch mit der Tastenkombination "CTRL + 1") und setze den Haken bei "Gesperrt" für diese Zellen im Register "Schutz" erneut.
  • Daraufhin aktivierest Du den Blattschutz im Menüband unter "Überprüfen" → "Blattschutz aktivieren" und entfernst den Haken bei "Gesperrte Zellen auswählen":

BlattSchutzGesperrteZellen

Nach diesen wenigen Schritten können generell die Zellen mit Formeln nicht mehr bearbeitet und selektiert werden.

Blattschutz knacken

Wer kennt das nicht: Passwort vergessen! - Besonders heutzutage, wo man mehrere Kennwörter hat und teilweise aufgefordert wird, ein neues einzupflegen. So kann dies schnell zu einem mühsamen Unterfangen werden. Mit Excel und dessen Blattschutz kann dies ähnlich verlaufen. (... oder Du erhältst eine gesperrte Tabelle und willst gewisse Bereiche genauer anschauen... ;-))

Auf www.ulrichhanke.de habe ich eine interessante Anleitung gesehen, wie man den Blattschutz mittels VBA (Makro) knacken kann. Mit diesem Link geht's direkt zum erwähnten Beitrag auf www.ulrichhanke.de. Ich möchte an dieser Stelle kurz aufzeigen, wie Du selbst den Blattschutz setzen kannst, um den hier behandelten Inhalt zu testen. Öffne eine Excel-Tabelle und gehe in der Menüleiste auf "Überprüfen" - dort findest Du "Blatt schützen". Gib nun ein Passwort ein und bestätige dieses - danach ist Deine Tabelle gesperrt.

Was ist nun zu tun? Du öffnest Deine gesperrte Excel-Tabelle und gehst in die Makro-Umgebung via der Tastenkombination Alt+F11. Auf der linken Seite siehst Du sämtliche Tabellenblätter. Mache da einen Rechtsklick und gehe auf "Einfügen" → "Modul".

 Modul

In dieses Modul schreibst Du dann den nachfolgenden Code:

Sub BlattschutzEntfernen()

On Error Resume Next

For i = 65 To 66: For j = 65 To 66
For k = 65 To 66: For l = 65 To 66
For m = 65 To 66: For n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For s = 65 To 66: For t = 32 To 126

ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(s) & Chr(t)

Next t: Next s: Next r: Next q
Next p: Next o: Next n: Next m
Next l: Next k: Next j: Next i

MsgBox "Blattschutz aufgehoben"

End Sub

Nun kannst Du das Makro ausführen und der Blattschutz wird entfernt. Für kurze Passwörter wie "gesperrt" dauert das Knacken nur wenige Augenblicke. Ich habe zudem ein komplexeres Passwort ausprobiert, beginnend mit einem Grossbuchstaben, zwei Zahlen und einem Sonderzeichen und den Prozess nach 5 Minuten abgebrochen - es kann also bei sichereren Kennwörtern durchaus eine lange Prozedur werden!

Weshalb funktioniert dieses Makro?

Beim einen oder anderen kommt bestimmt die Frage auf: Weshalb funktioniert dieses Makro? - und darauf möchte ich auch noch kurz eingehen. Der Blattschutz in Excel speichert Dein Passwort nicht 1:1, sondern es wird davon eine Art Quersumme berechnet. Daraus folgt, dass das gewählte Kennwort nicht ein Unikat ist - es könnten mehrere Passwörter möglich sein! Ich habe mit "gesperrt" einen weiteren Test durchgeführt: Das Passwort "AAABBBAAAAB{" ist gleichwertig! Versuche das einmal aus - sperre Deine Tabelle mit dem Passwort "gesperrt" und hebe den Blattschutz mit "AAABBBAAAAB{" wieder auf - das funktioniert! Wie bin ich auf diese seltsame Zeichenfolge gekommen? Ich habe das Makro leicht angepasst, hier ist der vollständige Code dazu:

Sub BlattschutzEntfernen()

Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim o As Integer, p As Integer, q As Integer
Dim r As Integer, s As Integer, t As Integer

On Error Resume Next
For i = 65 To 66: For j = 65 To 66
For k = 65 To 66: For l = 65 To 66
For m = 65 To 66: For n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For s = 65 To 66: For t = 32 To 126

ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(s) & Chr(t)

If ActiveSheet.ProtectContents = False Then
MsgBox "Ein mögliches Passwort ist " & _
Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & Chr(p) & _
Chr(q) & Chr(r) & Chr(s) & Chr(t)
Exit Sub
End If

Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next

End Sub

Viel Spass & Erfolg beim Ausprobieren! Danke an Florian für den Hinweis!