Herbers Excel-Forum - das Archiv

Zellen sperren, wenn Bedingung erfüllt ist

Bild

Betrifft: Zellen sperren, wenn Bedingung erfüllt ist
von: JörgR.

Geschrieben am: 22.02.2005 09:39:24
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.
Bild

Betrifft: AW: Zellen sperren, wenn Bedingung erfüllt ist
von: Björn B.

Geschrieben am: 22.02.2005 20:40:03
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
Bild

Betrifft: AW: Zellen sperren, wenn Bedingung erfüllt ist
von: JörgR.

Geschrieben am: 22.02.2005 21:33:40
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.
Bild

Betrifft: AW: Zellen sperren, wenn Bedingung erfüllt ist
von: JörgR.

Geschrieben am: 22.02.2005 21:53:41
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.
Bild

Betrifft: AW: Zellen sperren, wenn Bedingung erfüllt ist
von: Björn B.

Geschrieben am: 23.02.2005 20:07:39
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
Bild

Betrifft: AW: Zellen sperren, wenn Bedingung erfüllt ist
von: JörgR.

Geschrieben am: 24.02.2005 10:08:54
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.
 Bild
Excel-Beispiele zum Thema "Zellen sperren, wenn Bedingung erfüllt ist "
Makros in Abhängigkeit vom Zellennamen aufrufen Zellen auf Kommentar überprüfen
Spalten bedingt summieren und Zellen formatieren Text aus Textbox in Zellen aufteilen
Zellen vergleichen und markieren Zählen formatierter Zellen
Daten aus Textdatei gezielt in Zellen übernehmen Zellen verbinden und trennen
Zellen bei Minuswerten schraffieren Zeilen oberhalb der markierten Zellen einfügen