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

Forumthread: Zellen sperren, wenn Bedingung erfüllt ist

Zellen sperren, wenn Bedingung erfüllt ist
22.02.2005 09:39:24
JörgR.
Hallo zusammen,
und vielen Dank schon einmal im voraus.
Ich habe eine Excel-Sheet für den mehrfachzugriff im Netzwerk freigegeben
und möchte erreichen, dass ein Überschreiten eines Sollwertes nicht möglich
ist, sondern die Zeile für den Zugriff gesperrt wird.
z.Bsp.
SOLL---Ist---A----B---C---D---E
-4------5----1----1---1---1---1
Im Bespiel hätte also der Zustand nicht eintreten dürfen, da der Eintrag 1 in diesen Zeilen für einen der User A - E hätte nicht mehr möglich sein dürfte. Ein kleines Sahnehäubchen wäre es dann, wenn User A, um Veränderungen überhaupt noch zu ermöglichen, als einziger noch Veränderungen in alle Richtungen vornehmen kann, ohne das Excel-Sheet aus dem Netzwerk-Zugriff zu nehmen. ( oder eine ähnliche Variante, zur Aufhebung des Zellschutz )
Welche Möglichekeiten gibt es?
Mit freundlichen Grüßen
JörgR.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren, wenn Bedingung erfüllt ist
22.02.2005 20:40:03
Björn
Hallo Jörg,
dein Problem mit dem Sperren könntest du über VBA lösen.
Man kann bei einem Tabellenblatt die Änderung von Zelleinträgen überwachen. Wenn du einen Grenzwert vorgibst, dann kann die Zelle bei Erreichen per VBA gesperrt werden.
Beispiel:
Die folgende Prozedur sperrt die Zelle C3, sobald ein Wert größer 4 eingetragen wird.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
If Target.Value > 4 Then
Target.Parent.Unprotect
Target.Locked = True
Target.Parent.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If
End Sub

Gruß
Björn
Anzeige
AW: Zellen sperren, wenn Bedingung erfüllt ist
JörgR.
Hallo Björn,
vielen Dank für den Code, habe diesen als VBAProjekt auf das Arbeitsblatt gelegt
und fest gestellt, dass meine VBA-Kenntnisse wahrscheinlich glein "0" sind.
( ... soll heißen, es passiert nichts)
Welche Fehler kann ich machen?
Mit freundlichen Grüßen
JörgR.
AW: Zellen sperren, wenn Bedingung erfüllt ist
JörgR.
Hallo Björn,
es hat doch noch geklappt, Dein Code funktioniert, so wie von Dir beschrieben.
(... hab mal ein Bsp. hochgeladen unter https://www.herber.de/bbs/user/18546.xls)
Ich möchte erreichen, dass ab dem Zustand SOLL=IST, in der Zeile 3 die Zellen (C bis G) gesperrt sind und keine zusätzlichen Einträge mehr getätigt werden können.
Kannst Du Deinen Code dahingehend modifizieren?
Vielen Dank.
Mit freundlichen Grüßen
JörgR.
Anzeige
AW: Zellen sperren, wenn Bedingung erfüllt ist
23.02.2005 20:07:39
Björn
Hallo Jörg,
dann versuch mal folgenden Code:

Private Sub Worksheet_Calculate()
With ActiveSheet
If .Range("B3").Value = .Range("A3").Value And .Range("C3:G3").Locked = False Then
.Unprotect
.Range("C3:G3").Locked = True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End With
End Sub

Gruß
Björn
Anzeige
AW: Zellen sperren, wenn Bedingung erfüllt ist
JörgR.
Hallo Björn,
mit dem neuen Code von Dir, ist wieder ein Stück meines Problems gelöst, vielen Dank dafür.
Jetzt erhalte ich jedesmal eine Kennwortabfrage, wenn ich die Abfrage ohne Kennworteingabe beende oder die Box schließe gibt es einen Laufzeitfehler in der
Zeile ".Range("C3:G3").Locked = True". Wenn ich das Kennwort eingebe läuft es super, kann ich das automatisieren, ohne Box, im Hintergrund?
Mit freundlichen Grüßen
JörgR.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen sperren, wenn Bedingung erfüllt ist


Schritt-für-Schritt-Anleitung

Um Excel-Zellen zu sperren, wenn eine bestimmte Bedingung erfüllt ist, kannst du sowohl VBA als auch die integrierten Funktionen nutzen. Hier ist eine Schritt-für-Schritt-Anleitung, um dies zu erreichen:

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

  2. Füge einen neuen Modul hinzu:

    • Rechtsklicke auf das Projektfenster und wähle Einfügen -> Modul.
  3. Kopiere den folgenden Code in das Modul, um Zellen zu sperren, wenn eine Bedingung erfüllt ist:

    Private Sub Worksheet_Calculate()
    With ActiveSheet
       If .Range("B3").Value = .Range("A3").Value And .Range("C3:G3").Locked = False Then
           .Unprotect
           .Range("C3:G3").Locked = True
           .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
       End If
    End With
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.

  5. Teste die Funktion, indem du Werte in die Zellen eingibst, die die Bedingungen erfüllen.


Häufige Fehler und Lösungen

  1. Kennwortabfrage erscheint:

    • Stelle sicher, dass du den Schutz des Blattes korrekt einrichtest. Du kannst das Kennwort im Code setzen oder entfernen, um die Abfrage zu umgehen.
  2. Zellen werden nicht gesperrt:

    • Überprüfe, ob die Bedingungen im VBA-Code korrekt definiert sind. Achte darauf, dass die Zellen, die überprüft werden, auch tatsächlich die richtigen Werte enthalten.
  3. Laufzeitfehler beim Schließen der Box:

    • Dieser Fehler tritt häufig auf, wenn die Bedingungen nicht erfüllt sind. Stelle sicher, dass die Zellen, die gesperrt werden sollen, im richtigen Status sind, bevor du den Code ausführst.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du die Datenüberprüfung nutzen, um Eingaben zu beschränken:

  1. Wähle die Zelle aus, die du sperren möchtest.
  2. Gehe zu Daten -> Datenüberprüfung.
  3. Wähle Benutzerdefiniert und gib eine Formel ein, die die Bedingung darstellt, z. B.:

    =C3<4

Diese Methode erlaubt es dir, nur bestimmte Werte in die Zelle einzugeben, was eine einfache Möglichkeit ist, Zellen zu sperren, wenn eine Bedingung erfüllt ist.


Praktische Beispiele

  • Beispiel 1: Sperren der Zelle C3, wenn der Wert in B3 gleich A3 ist:

    If .Range("B3").Value = .Range("A3").Value Then
       ' Sperrlogik hier
    End If
  • Beispiel 2: Ausgrauen von Zellen, wenn eine Bedingung erfüllt ist:

    If .Range("B3").Value > 4 Then
       .Range("C3:G3").Interior.Color = RGB(200, 200, 200) ' Zellen ausgrauen
    End If

Tipps für Profis

  • Verwende Fehlerbehandlung in deinem VBA-Code, um unerwartete Laufzeitfehler abzufangen:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Teste deinen Code gründlich, insbesondere, wenn mehrere Benutzer gleichzeitig auf das Excel-Dokument zugreifen (Mehrfachzugriff Excel).

  • Halte deinen VBA-Code gut dokumentiert, damit du später einfach Anpassungen vornehmen kannst.


FAQ: Häufige Fragen

1. Wie kann ich Zellen sperren, wenn eine andere Zelle beschrieben wird? Um eine Zelle zu sperren, wenn eine andere Zelle beschrieben wird, kannst du eine ähnliche Logik wie oben beschrieben verwenden, indem du die Worksheet_Change-Ereignisprozedur in VBA nutzt.

2. Ist es möglich, Zellen ohne VBA zu sperren? Ja, du kannst die Funktion Datenüberprüfung in Excel verwenden, um die Eingabe in bestimmten Zellen zu steuern, ohne VBA nutzen zu müssen.

3. Wie entsperre ich eine Zelle, wenn eine Bedingung erfüllt ist? Du kannst den VBA-Code so modifizieren, dass die Zelle entsperrt wird, wenn die Bedingung nicht mehr erfüllt ist, indem du .Locked = False setzt und den Schutz wieder anwendest.

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