Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zelle sperren, wenn andere Zelle mit Inhalt

Zelle sperren, wenn andere Zelle mit Inhalt
12.10.2017 12:14:40
Andreas
Hi Forum,
Ich möchte, dass in allen Arbeitsblättern meiner Mappe die Zelle C* gesperrt ist, wenn in Zelle B* was eingetragen wird.
Also
B1 ist nicht leer → C1 gesperrt
B2 ist leer → C2 nicht gesperrt
B3 ist leer → C3 nicht gesperrt
B4 ist nicht leer → B4 geperrt
...
Gesperrt bedeutet, dass in einem geschützten Arbeitsblatt die Zelle nicht ausgewählt wird, wenn man Enter oder Tab drückt. Auch, dass sie nicht mit Maus ausgewählt werden kann.
Das Arbeitsblatt ist grundsätzlich geschützt aber ohne Passwort.
Hat da jemand eine schnelle Idee? VBA kann ich einigermaßen lesen und bedingt anpassen, aber nicht entwickeln.
Vielen Dank für Tipps... Andreas
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle sperren, wenn andere Zelle mit Inhalt
12.10.2017 12:53:48
Rudi
Hallo,
so?
Sub aaa()
Dim wks As Worksheet, r As Range
For Each wks In Worksheets
With wks
.Unprotect
.Cells.Locked = False
For Each r In .Range(.Cells(1, 2), .Cells(Rows.Count, 2).End(xlUp))
r.Offset(, 1).Locked = r  ""
Next r
.EnableSelection = xlUnlockedCells
.Protect
End With
Next
End Sub

Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelle sperren, wenn andere Zelle mit Inhalt


Schritt-für-Schritt-Anleitung

Um in Excel eine Zelle zu sperren, wenn eine andere Zelle beschrieben wird, kannst du VBA nutzen. Folge diesen Schritten:

  1. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke im Projektfenster auf das Arbeitsblatt, in dem du die Zellen sperren möchtest.

  3. Füge folgenden Code in das Codefenster ein:

    Sub ZelleSperren()
       Dim wks As Worksheet, r As Range
       For Each wks In Worksheets
           With wks
               .Unprotect
               .Cells.Locked = False
               For Each r In .Range(.Cells(1, 2), .Cells(Rows.Count, 2).End(xlUp))
                   r.Offset(, 1).Locked = r.Value <> ""
               Next r
               .EnableSelection = xlUnlockedCells
               .Protect
           End With
       Next
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, um die Zellen zu sperren.

Dieser Code überprüft für jede Zelle in Spalte B, ob sie beschrieben ist. Wenn ja, wird die entsprechende Zelle in Spalte C gesperrt.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht.

    • Lösung: Stelle sicher, dass die Arbeitsblätter nicht passwortgeschützt sind, bevor du das Makro ausführst.
  • Fehler: Zellen in Spalte C werden nicht gesperrt.

    • Lösung: Überprüfe, ob die Zellen in Spalte B tatsächlich Werte enthalten. Der Code sperrt nur die Zellen in C, wenn die Zellen in B nicht leer sind.

Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch Datenüberprüfungen nutzen, um Eingaben zu steuern. Hier ist eine einfache Methode:

  1. Wähle die Zelle in Spalte C aus, die du schützen möchtest.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Benutzerdefiniert aus und gib eine Formel ein, die prüft, ob die Zelle in Spalte B leer ist, z.B.:

    =ISTLEER(B1)

Diese Methode verhindert jedoch nicht, dass die Zelle ausgewählt werden kann, sondern gibt nur eine Warnung aus.


Praktische Beispiele

Stellen wir uns vor, du hast ein Arbeitsblatt mit den folgenden Werten:

B C
Wert1
Wert2

Nach dem Ausführen des VBA-Codes wird die Tabelle so aussehen:

B C
Wert1 Gesperrt
Wert2 Gesperrt

Die Zellen in Spalte C sind nun gesperrt, wenn in den entsprechenden Zellen in Spalte B Werte vorhanden sind.


Tipps für Profis

  • Nutze den Worksheet_Change-Ereignis-Trigger, um die Zellen automatisch zu sperren, sobald du einen Wert in Spalte B eingibst.
  • Verwende Application.EnableEvents = False, um zu verhindern, dass das Makro sich selbst auslöst, während es läuft.

FAQ: Häufige Fragen

1. Kann ich das Makro auf mehrere Arbeitsblätter gleichzeitig anwenden?
Ja, der bereitgestellte Code durchläuft alle Arbeitsblätter in deiner Arbeitsmappe.

2. Was passiert, wenn ich eine Zelle in Spalte B lösche?
Wenn du eine Zelle in Spalte B leer machst, wird die entsprechende Zelle in Spalte C wieder entsperrt, wenn du das Makro erneut ausführst.

3. Ist es möglich, das Passwort für das Arbeitsblatt zu setzen?
Ja, du kannst das .Protect-Kommando anpassen, um ein Passwort zu setzen, indem du .Protect "deinPasswort" verwendest.

4. Funktioniert dieser Code in Excel 365?
Ja, der Code sollte in Excel 365 sowie in den meisten anderen Versionen funktionieren, die VBA unterstützen.

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