Kurzfassung —
Range.Lockedist eine Markierung, keine Sperre.Locked = Truezu setzen ändert nichts, was Sie sehen oder spüren; die Zelle wird erst unbearbeitbar, sobald das Blatt geschützt ist — dann liest Excel jede Zellmarkierung und friert die alsLockedmarkierten ein. Deshalb ist die klassische Klage — „ich habeLocked = Truegesetzt, aber Nutzer können die Zelle weiter bearbeiten" — kein Bug: Das Blatt war nie geschützt. Und weil jede ZelleLocked = Truebeginnt, ist der echte Ablauf umgekehrt: Sie entsperren die Eingabezellen (Locked = False) und schützen dann, sodass alles andere die Standardsperre erbt.
Sub MarkEditableCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Form")
ws.Cells.Locked = True ' jede Zelle ist es bereits - nur explizit
ws.Range("C4:C12").Locked = False ' die Eingaben sind die Ausnahmen
ws.Range("C4:C12").FormulaHidden = False
ws.Protect Password:="ac" ' JETZT beginnen die Markierungen zu zaehlen
End Sub
Locked ist das Kontrollkästchen in Zellen formatieren ▸ Schutz und die am meisten missverstandene
Eigenschaft in der Excel-Automatisierung — weil es scheinbar nichts tut, wenn man es setzt. Sie führen
cell.Locked = True aus, Sie klicken die Zelle an, und Sie können weiter darin tippen. Alles arbeitet
genau wie entworfen; Sie haben nur entdeckt, dass Locked für sich allein wirkungslos ist. Sobald Sie
verinnerlicht haben, dass Locked eine Notiz an das Schutzsystem ist statt ein Akt des Sperrens, wird
das ganze Feature vorhersagbar.
Was Sie lernen
- Das Denkmodell —
Lockedist eine Markierung, die der Schutzschalter liest, keine Sperre an sich - Die eine Regel, die den Bug Nummer eins erklärt —
Lockedbewirkt nichts, bis Sie das Blatt schützen - Warum jede Zelle gesperrt beginnt, und der umgekehrte Ablauf „die Eingaben entsperren", der daraus folgt
- Warum
Lockedauf einer gemischten AuswahlNullzurückliest, und wie Sie darauf prüfen FormulaHidden— die Begleit-Markierung, die eine Formel vor der Bearbeitungsleiste verbirgt- Warum Sie
Lockedsetzen müssen, solange das Blatt ungeschützt ist
Das Denkmodell: eine Markierung, keine Sperre
Stellen Sie sich Locked als Klebezettel auf jeder Zelle vor, auf dem steht „frier mich ein, wenn der
Schutz an ist". Den Zettel zu schreiben friert nichts ein; es hält nur eine Absicht fest. Das eigentliche
Einfrieren geschieht später, und von jemand anderem — Worksheet.Protect —, der das Blatt durchgeht, jeden
Zettel liest und ihn durchsetzt. Zwei Zellen können identische Locked-Markierungen tragen und sich völlig
unterschiedlich verhalten, rein abhängig davon, ob ihr Blatt geschützt ist.
Deshalb sind Locked und Protect ein Paar, das man zusammen verstehen muss.
Locked ist die Karte von wer-darf-was-bearbeiten; Protect ist der Schalter, der beginnt, die Karte
zu befolgen. Keines erledigt die Aufgabe allein: Eine Karte, die niemand durchsetzt, ändert nichts, und ein
Schalter ohne Karte sperrt einfach alles (weil die Standardkarte jede Zelle als gesperrt markiert).
Die Regel, die den Bug Nummer eins erklärt: Locked ist wirkungslos, bis Sie schützen
Die meistgesuchte Frustration hinter diesem Thema ist „ich habe die Zelle auf Locked = True gesetzt, aber
der Nutzer kann sie weiter bearbeiten". Es ist nie ein Bug in Locked. Es bedeutet, das Blatt ist nicht
geschützt, also setzt nichts die Markierung durch. Die Locked-Eigenschaft hat auf einem ungeschützten
Blatt überhaupt keine Wirkung — Sie können sie auf jeder Zelle der Arbeitsmappe setzen und nichts daran
ändern, was jemand tippen kann.
ws.Range("A1").Locked = True ' A1 ist jetzt als gesperrt markiert...
' (Blatt ist nicht geschuetzt) ' ...und weiterhin voll bearbeitbar
ws.Protect ' JETZT ist A1 eingefroren
Locked ist also immer die Hälfte eines Zweischritts, und der zweite Schritt ist der, den man vergisst.
Muss eine Zelle Bearbeitung widerstehen, ist Locked = True zu setzen notwendig, aber nicht hinreichend —
das Blatt muss geschützt sein, damit die Markierung beißt. Sooft das Sperren „nicht funktioniert", ist das
Erste, was zu prüfen ist, ob ws.ProtectContents überhaupt True ist.
Jede Zelle beginnt gesperrt — also entsperren Sie die Ausnahmen
Hier ist die Tatsache, die den ganzen Ablauf umdreht: Jede Zelle in einem neuen Blatt ist bereits
Locked = True. Das bedeutet, „die Zellen sperren, die ich schützen will" ist fast nie der richtige Zug —
sie sind schon gesperrt. Das richtige Muster ist das Umgekehrte: den Standard belassen und die Handvoll
Zellen entsperren, die Leute bearbeiten sollen.
ws.Cells.Locked = True ' der Standard; fuer den naechsten Leser genannt
ws.Range("C4:C12").Locked = False ' die Eingaben entsperren - die Ausnahmen
ws.Protect Password:="ac" ' alles andere erbt die Sperre
Denken Sie in „welche Zellen sind die Eingaben?" und entsperren Sie jene; alles andere — Beschriftungen, Formeln, Überschriften — behält die Standardsperre und ist in dem Moment eingefroren, in dem Sie schützen. Das skaliert weit besser, als jede Zelle aufzuzählen, die schreibgeschützt sein soll, und deshalb entsperren gut gebaute Vorlagen einen kleinen, offensichtlichen Eingabebereich und sperren den Rest durch Auslassung.
Die Null-Falle: Locked auf einer gemischten Auswahl lesen
Locked liest nur dann sauber zurück, wenn ein Bereich einheitlich ist. Enthält ein Bereich sowohl
gesperrte als auch entsperrte Zellen, gibt das Lesen von .Locked Null zurück, nicht True oder
False. Ein naiver Test platzt also:
If ws.Range("A1:A10").Locked Then ' Laufzeitfehler, wenn der Bereich gemischt ist (Null)
Wenn A1:A10 einige gesperrte und einige entsperrte Zellen hat, ist .Locked Null, und If Null Then
wirft „Invalid use of Null." Sichern Sie es mit IsNull ab, wenn ein Bereich gemischt sein könnte:
Dim state As Variant
state = ws.Range("A1:A10").Locked
If IsNull(state) Then
' gemischt - je Zelle entscheiden
ElseIf state Then
' alle gesperrt
Else
' alle entsperrt
End If
Das ist dasselbe Drei-Zustands-Verhalten, das Sie bei WrapText und anderen
Zelleigenschaften sehen: Einheitliche Bereiche liefern einen Boolean, gemischte Bereiche liefern Null.
Lesen Sie eine Zelle nach der anderen, wenn Sie Gewissheit brauchen.
FormulaHidden: die Zelle sperren, das Rezept verbergen
Locked hat einen Begleiter, FormulaHidden, und zusammen decken sie die zwei Dinge ab, die Sie meist von
einem ausgelieferten Modell wollen: Der Nutzer kann die Formel nicht ändern und sie nicht einmal sehen.
Wie Locked tut FormulaHidden nichts, bis das Blatt geschützt ist; sobald es das ist, zeigt eine Zelle
mit FormulaHidden = True ihr Ergebnis im Gitter, aber eine leere Bearbeitungsleiste, wenn sie ausgewählt
ist.
ws.Range("D4:D100").Locked = True
ws.Range("D4:D100").FormulaHidden = True ' die Berechnung vor der Bearbeitungsleiste verbergen
ws.Protect Password:="ac"
Nutzen Sie es, wenn Sie eine Berechnung als Blackbox ausliefern — ein Preismodell, eine Bewertungsformel — und wollen, dass Leute der Zahl vertrauen, ohne die Haube zu heben. Wie immer ist es eine Geste für Bequemlichkeit und geistiges Eigentum, keine Sicherheit: Wie Schutzpasswörter ist es leicht ausgehebelt. Aber um eine Formel aus dem beiläufigen Blick herauszuhalten, ist es genau die richtige Markierung.
Warum Sie Locked setzen müssen, solange das Blatt ungeschützt ist
Die Locked-Karte muss gezeichnet werden, solange das Blatt offen ist. Der Versuch cell.Locked = False
auf einem geschützten Blatt wirft den Laufzeitfehler 1004 — Sie können die Karte nicht neu zeichnen,
während der Schalter, der sie durchsetzt, an ist. Die Reihenfolge ist also fest und nicht verhandelbar:
Unprotect (falls nötig), jede Locked- und FormulaHidden-Markierung setzen,
dann Protect. Muss ein Makro zur Laufzeit ändern, welche Zellen bearbeitbar sind, muss es zuerst den
Schutz aufheben, die Markierungen anpassen und erneut schützen — Sie können die Markierungen nie durch eine
aktive Sperre hindurch bearbeiten.
Wie ExcelMaster hilft
Locked scheitert auf die verwirrendste Art, die möglich ist: Es tut genau nichts, ohne Fehler, bis das
Blatt geschützt ist — also setzen Leute es, sehen Nutzer trotzdem „gesperrte" Zellen bearbeiten und nehmen
an, die Eigenschaft sei kaputt. Dann bringt sie der umgekehrte Ablauf zu Fall, oder ein Lesen über einen
gemischten Bereich wirft „Invalid use of Null", oder sie versuchen, Zellen durch einen aktiven Schutz
hindurch neu zu markieren, und treffen auf 1004.
ExcelMaster lässt Sie das Ziel
sagen — „lass Leute nur die gelben Eingabezellen bearbeiten und verbirg die Formeln" — und setzt Locked
und FormulaHidden in der richtigen Reihenfolge, entsperrt die Eingaben, statt alles andere zu sperren,
paart die Markierungen mit dem Protect-Aufruf, der sie tatsächlich durchsetzt, und sichert Lesevorgänge
über gemischte Bereiche gegen Null ab. Sie behalten die Arbeitsmappe und den Code.
Häufig gestellte Fragen
Warum können Nutzer eine Zelle weiter bearbeiten, nachdem ich Locked in VBA auf True gesetzt habe?
Weil Locked nichts tut, bis das Blatt geschützt ist. Es ist nur eine Markierung, die das Schutzsystem
liest — ein ungeschütztes Blatt ignoriert sie vollständig. Setzen Sie die Zellen auf Locked = True (oder
belassen Sie den Standard), dann rufen Sie ws.Protect auf. Ist Bearbeiten danach immer noch möglich,
prüfen Sie mit ws.ProtectContents, ob das Blatt tatsächlich geschützt ist.
Wie sperre ich nur einige Zellen und lasse den Rest bearbeitbar?
Nutzen Sie den umgekehrten Ablauf. Jede Zelle beginnt Locked = True, entsperren Sie also die Ausnahmen,
statt die Ziele zu sperren: ws.Cells.Locked = True, dann ws.Range("C4:C12").Locked = False für die
Eingabezellen, dann ws.Protect. Alles, was Sie nicht entsperrt haben, erbt die Standardsperre und ist
eingefroren, sobald das Blatt geschützt ist.
Warum wirft das Lesen der Locked-Eigenschaft einen Fehler?
Weil der Bereich gemischt ist. Locked gibt Null zurück, wenn ein Bereich sowohl gesperrte als auch
entsperrte Zellen enthält, und If Range.Locked Then auf einem Null wirft „Invalid use of Null." Testen
Sie zuerst mit IsNull, oder lesen Sie eine Zelle nach der anderen: Ein einheitlicher Bereich liefert einen
Boolean, ein gemischter liefert Null.
Was ist der Unterschied zwischen Locked und FormulaHidden?
Locked verhindert, dass eine Zelle bearbeitet wird, sobald das Blatt geschützt ist; FormulaHidden
verhindert, dass ihre Formel in der Bearbeitungsleiste gesehen wird, sobald das Blatt geschützt ist. Beide
sind Markierungen, die nur unter Schutz wirken. Nutzen Sie sie zusammen, um eine Berechnung auszuliefern,
die der Nutzer weder ändern noch inspizieren kann — die Zelle sperren und die Formel verbergen, dann
schützen.
Kann ich den Locked-Zustand einer Zelle ändern, solange das Blatt geschützt ist?
Nein. Locked (oder FormulaHidden) auf einem geschützten Blatt zu setzen wirft den Laufzeitfehler 1004.
Sie müssen die Karte zeichnen, solange die Durchsetzung aus ist: Unprotect, falls nötig, die
Locked-Markierungen setzen, dann Protect. Ein Makro, das die Bearbeitbarkeit zur Laufzeit ändert, muss
den Schutz aufheben, anpassen und erneut schützen.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 11.09.2026.
Verwandte Anleitungen: VBA Blatt schützen · VBA Blattschutz aufheben · VBA Zeilenumbruch · VBA Range · VBA Formula
