Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Code um einzelne Zellen zu sperren

VBA Code um einzelne Zellen zu sperren
23.09.2019 19:14:15
Christian
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
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code um einzelne Zellen zu sperren
23.09.2019 19:18:57
Regina
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
Anzeige
AW: VBA Code um einzelne Zellen zu sperren
23.09.2019 19:37:07
Christian
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.
Anzeige
AW: VBA Code um einzelne Zellen zu sperren
24.09.2019 01:43:36
Piet
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  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

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Code zum Sperren einzelner Zellen in Excel


Schritt-für-Schritt-Anleitung

Um einzelne Zellen in Excel zu sperren, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, Zellen dynamisch zu schützen, ohne den gesamten Blattschutz aktivieren zu müssen. Folge diesen Schritten:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, das du bearbeiten möchtest.
  2. Klicke mit der rechten Maustaste auf den Tab des Arbeitsblattes und wähle "Code anzeigen".
  3. Füge den folgenden VBA-Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If 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ückgängig 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ückgängig machen!
            MsgBox "Die Eingabe war keine Ganz- oder Kommazahl!"
        End If
    End If
End Sub
  1. Schließe den VBA-Editor und teste den Code, indem du versuchst, ungültige Daten in die entsprechenden Zellen einzugeben.

Häufige Fehler und Lösungen

  • Fehler: Der Code funktioniert nicht.

    • Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul und nicht in einem allgemeinen Modul eingefügt wurde.
  • Fehler: Blattschutz wird nicht angewendet.

    • Du musst die Zellen manuell als gesperrt markieren und den Blattschutz aktivieren, um den gewünschten Schutz zu erreichen.
  • Fehler: Datumsformat wird nicht erkannt.

    • Achte darauf, dass die Eingabe tatsächlich im Datumsformat erfolgt. Excel kann manchmal Ganzzahlen in Datumswerte umwandeln, was zu Verwirrung führen kann.

Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, gibt es auch andere Möglichkeiten, um excel einzelne zellen zu sperren:

  1. Datenvalidierung:

    • Du kannst die Funktion „Datenvalidierung“ verwenden, um sicherzustellen, dass nur bestimmte Werte in Zellen eingegeben werden können. Allerdings sind die Einschränkungen hierbei nicht so strikt wie bei VBA.
  2. Manuelles Sperren:

    • Wähle die Zellen aus, die du sperren möchtest, gehe zu "Zellen formatieren" > "Schutz" und entferne das Häkchen bei "Gesperrt". Aktiviere anschließend den Blattschutz ohne Passwort.

Praktische Beispiele

Hier sind einige Beispiele für das Sperren von Zellen:

  • Um die Zellen A1 bis A4 und B4 zu sperren, kannst du die Option „Gesperrt“ in den Zellenformatierungsoptionen aktivieren.
  • Verwende die oben genannte VBA-Lösung, um sicherzustellen, dass nur gültige Datums- oder Zahlenwerte in den Bereichen A5:A250 und B5:B250 akzeptiert werden.

Tipps für Profis

  • Überlege, ob du VBA zellen sperren ohne blattschutz verwenden möchtest, um mehr Flexibilität zu haben.
  • Teste deine VBA-Codes regelmäßig, um sicherzustellen, dass sie wie gewünscht funktionieren, insbesondere nach Änderungen.
  • Nutze den Makrorekorder, um dir bei der Erstellung von VBA-Codes zu helfen, falls du neu im Programmieren bist.

FAQ: Häufige Fragen

1. Kann ich Zellen sperren, ohne den Blattschutz zu aktivieren? Ja, du kannst die Zellen in Excel so formatieren, dass sie nicht gesperrt sind, während der Blattschutz aktiviert ist. Dies ermöglicht es dir, bestimmte Zellen bearbeitbar zu lassen.

2. Wie kann ich den VBA-Code anpassen? Du kannst die Zeilennummern und Spalten anpassen, um den Code an deine spezifischen Anforderungen anzupassen. Stelle sicher, dass die Bedingungen deinem gewünschten Eingabeverhalten entsprechen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige