Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Code um einzelne Zellen zu sperren


Betrifft: VBA Code um einzelne Zellen zu sperren von: Christian
Geschrieben am: 23.09.2019 19:14:15

Grüßt euch,

ich benötige für mein Projekt eure Hilfe. Beim durchsuchen des Forums habe ich zwar einige Einträge gefunden, welche sich mit dem Sperren von Zellen beschäftigen, jedoch hat sich keiner direkt mit meinem Problem beschäftigt.

Erste Frage:

Der Bereich A1 bis A4 und B4 in Tabellenblatt "Eingabe" soll gegen löschen, überschreiben etc. gesperrt werden.

Ich könnte dies natürlich über die Daten und Gültigkeitsbereichsfunktion lösen, jedoch hätte ich dies gerne per VBA makro programmiert.

mit der worksheet.protect funktion sperrt es mir immer das gesamte Blatt :-/.

Zweite Frage:

Wie sähe der Code aus, wenn ich das gesamte Blatt bis auf ein paar spezielle Zellen speeren lasse.

Dritte Frage:

Der Bereich A5:A250 darf ausschließlich Datumsangaben enthalten und der Bereich B5:B250 ausschließlich Ganz und kommazahlen.
Könnt ihr mir hier noch mit der passenden Code-Funktion aushelfen.

Als VBA Neuling fällt es mir schwer nach dem richtigen Code zu suchen, wenn ich nicht weiß nach was ich im Netz suchen soll ;-).

Vielen Dank für eure Hilfe.

Grüße Christian

  

Betrifft: AW: VBA Code um einzelne Zellen zu sperren von: Regina Resch-Jansen
Geschrieben am: 23.09.2019 19:18:57

Hi,zu den Fragen 1 und 2:
Du kannst einzelne zellen von dem protect ausschließen. Dafür brauchst Du kei n VBA. Markiere die Zellen, dann Rechtsklick, Zellen formatieren. Dort auf dem reiter "Schutz" den Haken bei "Gesperrt" entfernen. Damit sind nach dem Protect-Befehl diese Zellen nicht gesperrt.

Für die 3. Frage empfehle ich Dir den Makrorekorder, der sollte das gewünschte Ergebnis liefern.

Gruß
Regina


  

Betrifft: AW: VBA Code um einzelne Zellen zu sperren von: Christian
Geschrieben am: 23.09.2019 19:37:07

Hi Regina,

danke für die schnelle Antwort.
Ich habe mein Problem wohl nicht richtig formuliert :L, denn wenn ich per Gültigkeitsabfrage einstelle, dass nur Datumsangaben in der Zelle erlaubt sind, kann der Anwender trozdem noch eine Ganzzahl eingeben. Diese rechnet Excel dann halt in ein Datum um.
Das selbe mit der Spalte B5:B250, dort darf von vorn herein nur Zahlen als Dezimalzahl eingegeben werden. Nicht etwa im Datumsformat etc.

Und das problem mit dem "händischen Sperren" der Zellen ist, dass der Anwender auch ggf. deutlich mehr Daten in der Spalte B einträgt als bis Zeile B250, sprich ich muss den Sperrbereich dynamisch halten.


  

Betrifft: AW: VBA Code um einzelne Zellen zu sperren von: Piet
Geschrieben am: 24.09.2019 01:43:36

Hallo Christian

im Eingabe Blatt kannst du den Bereich A1 bis A4 und B4 manuell auf gesperrt setzen, und dann den Blattschutz OHNE Passwort aktivieren.
Das reicht zum Schutz vor überschreiben völlig aus. Den Schutz musst du auch nicht deaktivieren! Vorteil: man vergisst das Passwort Nicht!!!
Den Rest probier bitte mal mit diesem Makro aus. Es gehört ins Blatt "Eıngabe", nicht in ein Modul!!
Würde mich freuen wenn du damit dein Problem zufriedenstellend lösen kannst ...

mfg Piet

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 5 Or Target.Row > 250 Then Exit Sub
If Target.Column > 2 Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = Empty Then Exit Sub

If Target.Column = 1 Then
   If Not IsDate(Target) Then
      Application.Undo   'Eingabe rückgaengig machen!
      MsgBox "Die Eingabe war kein gültiges Datum!"
   End If
End If

If Target.Column = 2 Then
   If IsDate(Target) Or Not IsNumeric(Target) Then
      Application.Undo   'Eingabe rückgaengig machen!
      MsgBox "Die Eingabe war keine Ganz oder Kommazahl!"
   End If
End If
End Sub



Beiträge aus dem Excel-Forum zum Thema "VBA Code um einzelne Zellen zu sperren"