Zellen Eingabe sperren VBA?
Hallo zusammen,
ich habe hier eine Liste den Bereich Bestand Kg und Vorlauf Kg möchte ich sperren, weil dort Formeln hinterlegt sind, leider schaffen es immer wieder Leute diese Zelle zu überschreiben und die Formel ist dann weg.
Gibt es ein Sub was dieses Problem für mich löst?

3 Antworten
Du kannst die Zellen schützen. Also entsperrst erstmal alle Zellen, die die Benutzer später bearbeiten dürfen (Zellen markieren, rechtsklick, auf "Zellen formatieren..." klicken, im neuen Fenster unter dem Registerblatt "Schutz" den Haken bei "gesperrt" rausnehmen), dann gehst du im Menü "Überprüfen" auf "Blatt schützen". Da kannst du einstellen, was alle Leute dürfen und kannst ein Kennwort eingeben, womit der Schutz wieder aufgehoben werden kann.
Ich geh mal davon aus, dass da keine böswilligen Hacker am Werk sind, sondern einfach unbedarfte User.
Da die Leute ja dann in der Zelle links daneben was eintragen sollen, würde ich das so lösen
- Sub Worksheet_selectionchange(Byval Target as range)
- if (not intersect(Target, columns(4).cells) is nothing) And (Not intersect(Target, columns(6).cells) is nothing) then target.offset(0, -1).select
- end sub.
Das lässt die angewählte Zelle nach links "abgleiten"
Die doppelte Verneinung (not...is nothing) verhindert Fehler, wenn zB ein Diagramm oder Zeichenobjekt ausgewählt wäre. Weiß nicht, ob das hier überhaupt auftreten könnte. Kürzer wäre:
if Target.column = 4 or Target.column = 6 then target.offset(0, -1).select
Da es passieren kann, dass ängstliche User beim Öffnen die Makros ausserkraft setzen, musst Du noch sicherstellen, dass Makros zugelassen sind. So kannst Du zB das Blatt oder die Formelspalten beim Workbook.close oder auch nur beim Verlassen des Blattes verbergen und nur per Makro wieder zur Anzeige bringen (wie gesagt, ein halbwegs versierter User hebelt das ohne Mühe aus):
- sub Workbook.close()
- Sheets("...").Select
- ActiveWindow.SelectedSheets.Visible = False
- end sub
und
sub Workbook_open()
Sheets("anderesBlatt").Select 'ob das notwendig ist, hab ich nicht geprüft
Sheets("...").Visible = True
end sub
oder
Columns("D:D").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Dass es einmal hidden heißt und einmal visible: da kann ich nichts dafür...
Hab das übrigens per µ-Recorder aufgezeichnet, rate ich Dir ebenfalls.
kannst natürlich auch sperren/entsperren (.locked = true, locked = false) nehmen oder sonstwas.
Das geht auch ohne VBA.
- markiere alle Zellen im Arbeitsblatt
- rechte Maustaste → Zellen formatieren
- Schutz → () Gesperrt
- Dann alle Zellen markieren, die gesperrt werden sollen und den Haken bei Gesperrt setzen.
- Überprüfen → Blatt schützen