Frage von Bensemilia, 108

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?

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 75

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
Expertenantwort
von Iamiam, Community-Experte für Excel, 64

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.

Antwort
von daCypher, 64

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.

Antwort
von Bensemilia, 45

Ja ich wollte ja mit Absicht eine VBA Formel "grins" :D

Keine passende Antwort gefunden?

Fragen Sie die Community