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

Forumthread: Zelle sperren in Abhängigkeit zu anderer Zelle

Zelle sperren in Abhängigkeit zu anderer Zelle
michael
Liebe Excel-Profis!
Ich verzweifle grad am Versuch eine Zelle in Abhängigkeit zu einer anderen Zelle zu sperren.
Es gibt hier ja schon viele Beiträge mit ähnlichen Themen aber irgendwie hat mich bislang keiner ans Ziel geführt.
Meine Datei schaut ungefähr so aus:
Monat Wert Status
Sept. € 234,00 Geschätzt
Okt. € 234,00 Bestätigt
Nov. € 151,00 Geschätzt
Dez. € 216,00 Bestätigt
Jan. € 165,00 Geschätzt
Feb. € 651,00 Bestätigt
In Spalte C hab ich als Gültigkeit "Geschätzt" und "Bestätigt" festgelegt.
Wenn nunmehr auf einen Button geklickt wird, soll Zeile für Zeile überprüft werden, ob der Wert in C "Geschätzt" oder "Bestätigt" ist.
Und wenn der Wert "Bestätigt" ist, soll in ebendieser Zeile sowohl die Zelle in B als auch jene in C auf locked = True gesetzt werden. Ist der Wert in C "Geschätzt", soll sich nichts ändern.
Ich schaffe es nicht, den richtigen Code zusammenzuzimmern. Könnt ihr mir helfen?
Herzlichen Dank!
Michael
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Nachgefragt ...
04.10.2011 10:28:28
Ilka
Hallo Matthias,
ich habe Dein Programm nachgebaut, aber offensichtlich etwas übersehen. Am Programmcode kann es nicht liegen.
Wenn ich in einer Zelle geschätzt auf bestätigt umstelle, dann werden die beiden davon betroffenen Zellen geschützt.
Will ich ein weiteres Mal eine Zelle von geschätzt auf bestätigt umstellen, erscheint die Fehlermeldung
"Die Zelle oder das Diagramm, die bzw. das Sie ändern möchten, ist schreibgeschützt.
Sie können ein geschütztes Diagramm oder eine geschützte Zelle ändern, wenn Sie zuerst mit dem Befehl Blattschutz aufheben entfernen (Registerkarte Überprüfen, Gruppe Änderungen).
Hast Du eine Idee woran es liegen kann?
Gerne würde ich den Sachverhalt verstehen.
Gruß
Ilka Maria
Anzeige
AW: Nachgefragt ...
04.10.2011 11:00:02
haw
Hallo Ilka Maria,
für diesen Fall muss das Makro noch um einen Else-Teil ergänzt werden:

Sub Schaltfläche2_BeiKlick()
Dim x&
ActiveSheet.Unprotect
For x = 2 To 7 'Zeile 2-7
If Cells(x, 3).Value = "bestätigt" Then
Cells(x, 2).Locked = True
Cells(x, 3).Locked = True
Else
Cells(x, 2).Locked = False
Cells(x, 3).Locked = False
End If
Next
ActiveSheet.Protect
End Sub

Gruß
Heinz
Anzeige
AW: Nachgefragt ...
04.10.2011 11:24:47
Ilka
Hallo Heinz,
ich danke Dir für den ELSE-Teil.
Eine Zusatzfrage: Welchen Sinn hatte eigentlich das ursprüngliche Programm?
Konnte man dieses nur einmal starten?
Gruß
Ilka Maria
AW: Nachgefragt ...
04.10.2011 12:24:20
haw
Hallo Ilka-Maria.
Es überprüfte nur, ob in der Spalte C "bestätigt" steht.
Falls ja, sperrte es die Spalte B und C in der entsprechenden Zeile.
Am Ende wurde der Blattschutz aktiviert (ActiveSheet.Protect), was bewirkte, dass in den gesperrten Zellen kein Eintrag mehr gemacht werden konnte.
Wenn du den Eintrag wieder in etwas anderes geändert hast, hatte das Makro darauf nicht reagiert und die Zelle blieb gesperrt.
"Will ich ein weiteres Mal eine Zelle von geschätzt auf bestätigt umstellen..."
Das kommt daher, dass von der Grundeinstellung her alle Zellen eines Blattes das Attribut "gesperrt" haben. Dies wirkt sich aber erst aus, wenn der Blattschutz aktiviert ist, was eben durch das Makro geschehen ist.
Gruß
Heinz
Anzeige
Danke
04.10.2011 14:16:51
Ilka
Hallo Heinz,
ich danke Dir für die Erklärung. Jetzt ist das Programm verstanden.
Einen schönen Tag.
Gruß
Ilka Maria
AW: DANKE!!!!
04.10.2011 16:43:34
michael
Hallo Matthias und Heinz,
herzlichen Dank für eure Hilfe - es funktioniert ganz wunderbar! :)
Beste Grüße aus Wien,
Michael
nur so zum Verständnis ...
04.10.2011 20:24:27
Matthias
Hallo
ich habe Dein Programm nachgebaut
Das war auch das Problem.
In meiner geposteten Datei hatte ich den Zellschutz aller Zellen bereits entfernt.
Hättest Du es also mit dieser Datei probiert, dann hätte alles geklappt ;o)
Im Übrigen bin ich davon ausgegangen, das Michael den einmal gesetzten Zellschutz
nicht mehr aufheben will.
Deshalb gab es auch kein Else.
Gruß Matthias
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelle sperren in Abhängigkeit zu anderer Zelle


Schritt-für-Schritt-Anleitung

Um Excel Zellen zu sperren in Abhängigkeit zu einer anderen Zelle, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projektfenster dein Arbeitsblatt aus.

  3. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf dein Projekt klickst und „Einfügen” > „Modul” auswählst.

  4. Kopiere den folgenden Code in das Modul:

    Sub Schaltfläche2_BeiKlick()
       Dim x As Integer
       ActiveSheet.Unprotect
       For x = 2 To 7 'Anpassen je nach Anzahl der Zeilen
           If Cells(x, 3).Value = "bestätigt" Then
               Cells(x, 2).Locked = True
               Cells(x, 3).Locked = True
           Else
               Cells(x, 2).Locked = False
               Cells(x, 3).Locked = False
           End If
       Next
       ActiveSheet.Protect
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu deinem Arbeitsblatt.

  6. Füge einen Button hinzu, der das Makro ausführt: Entwicklertools > Einfügen > Button.

  7. Weise dem Button das vorgenannte Makro zu.

Jetzt wird beim Klicken auf den Button überprüft, ob in Spalte C der Wert „Bestätigt” steht. In diesem Fall werden die entsprechenden Zellen in Spalte B und C gesperrt.


Häufige Fehler und Lösungen

  • Fehler: "Die Zelle oder das Diagramm, das Sie ändern möchten, ist schreibgeschützt."

    • Lösung: Stelle sicher, dass der Blattschutz vor dem Sperren der Zellen mit ActiveSheet.Unprotect deaktiviert ist.
  • Fehler: Änderungen werden nicht übernommen.

    • Lösung: Überprüfe, ob der Zellschutz für alle Zellen aktiviert ist. Du kannst dies tun, indem du alle Zellen markierst, mit der rechten Maustaste klickst und „Zellen formatieren” > „Schutz” aufrufst.

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion „Datenüberprüfung” nutzen, um die Eingaben in den Zellen zu steuern. Diese Methode ist jedoch nicht so flexibel wie das Sperren von Zellen.

  1. Wähle die Zelle, die du schützen möchtest.
  2. Gehe zu „Daten” > „Datenüberprüfung”.
  3. Wähle die Kriterien für die Eingabe aus, zum Beispiel nur Werte, die „Bestätigt” sind.

Praktische Beispiele

Angenommen, du hast eine Tabelle mit den Spalten „Monat”, „Wert” und „Status”. Wenn der Status auf „Bestätigt” gesetzt wird, sollen die zugehörigen Werte nicht mehr verändert werden können. Mit dem obenstehenden Makro wird dies erreicht.

  1. In Spalte C gib die Werte „Geschätzt” oder „Bestätigt” ein.
  2. Klicke auf den Button, um das Makro auszuführen.
  3. Überprüfe, ob die Werte in Spalte B und C entsprechend gesperrt wurden.

Tipps für Profis

  • Vorbereitung: Entferne den Zellschutz aller Zellen, bevor du dein Makro ausführst. So hast du mehr Kontrolle über die Eingaben.
  • Sichtbarkeit: Nutze bedingte Formatierungen, um visuell hervorzuheben, welche Zellen gesperrt sind.
  • Dokumentation: Kommentiere deinen VBA-Code, um die Funktionsweise für andere Nutzer oder später für dich selbst klarer zu machen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Zeilen zu überprüfen? Du kannst die Zeilenanzahl in der For-Schleife anpassen. Ändere For x = 2 To 7 auf die gewünschte Zeilenanzahl.

2. Was passiert, wenn ich versuche, eine gesperrte Zelle zu ändern? Du erhältst eine Fehlermeldung, dass die Zelle oder das Diagramm, das du ändern möchtest, sich auf einem schreibgeschützten Blatt befindet.

3. Kann ich auch ganze Spalten sperren? Ja, du kannst den Code so erweitern, dass ganze Spalten gesperrt werden, indem du Cells(x, 1).Locked = True hinzufügst, um die gesamte Spalte zu sperren.

Mit diesen Anleitungen solltest du in der Lage sein, deine Excel Zellen zu schützen und das Sperren von Zellen in Excel effektiv zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige