Zellen Eingabe sperren VBA?

Ansicht  - (programmieren, Microsoft, Microsoft Excel)

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
Woher ich das weiß:Berufserfahrung – Programmierer