Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
588to592
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen sperren, wenn andere Zelle leer

Zellen sperren, wenn andere Zelle leer
29.03.2005 20:20:53
Patrick
Hallo zusammen,
ist es möglich, dass man Zellen automatisch für die Eingabe sperrt und auf den Wert "0" setzt, wenn eine andere Zelle keinen Inhalt hat?
Beispiel:
Wenn C1=""; dann D1 sperren und Wert="0"
Wenn C2=""; dann D2 sperren und Wert="0"
usw.
Am Besten als Makro, welches die Änderung sofort übernimmt, da das dann für ca. 200-250 Zeilen in dem Blatt funktionieren müßte.
Gruß
Patrick

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren, wenn andere Zelle leer
29.03.2005 20:37:00
Luc
Hallo Patrick,
das geht nur unter bestimmten Voraussetzungen:
1.das Tabellenblatt muss geschützt sein (nur userinterface)
2.die Zellen, die bearbeitet werden sollen, müssen ungesperrt sein
3.ein VBA-Programm muss auf das Arbeitsblatt-Ereignis Change reagieren, die relevanten Zellen prüfen und die zu sperrenden Zellen sperren bzw die Sperrung wieder aufheben.
Gruß Luc :-?
AW: Zellen sperren, wenn andere Zelle leer
29.03.2005 20:48:39
Patrick
Hallo Luc,
zu 1.das Tabellenblatt muss geschützt sein (nur userinterface)
- ja, ist es, da noch andere Bereiche dauerhaft geschützt sein sollen
2.die Zellen, die bearbeitet werden sollen, müssen ungesperrt sein
- die Zellen ohne Wert (C1) werden nur entsperrt, wenn ich sie bearbeite. Für andere sollen sie gesperrt bleiben. D1 bleibt offen, solange der Wert in C1 angegeben ist.
(Zur Info: in C1 stehen Artikelnummern drin, die erst bei Verfügbarkeit des Artikels feststehen. Deshalb müssen die nur zeitweise entsperrt werden. In D1 steht die Anzahl für den Artikel.)
3.ein VBA-Programm muss auf das Arbeitsblatt-Ereignis Change reagieren, die relevanten Zellen prüfen und die zu sperrenden Zellen sperren bzw die Sperrung wieder aufheben.
- ok, soweit komme ich auch, aber dann...
Gruß
Patrick
Anzeige
AW: Zellen sperren, wenn andere Zelle leer
29.03.2005 21:35:58
Patrick
Hallo Luc,
zu 1.das Tabellenblatt muss geschützt sein (nur userinterface)
- ja, ist es, da noch andere Bereiche dauerhaft geschützt sein sollen
2.die Zellen, die bearbeitet werden sollen, müssen ungesperrt sein
- die Zellen ohne Wert (C1) werden nur entsperrt, wenn ich sie bearbeite. Für andere sollen sie gesperrt bleiben. D1 bleibt offen, solange der Wert in C1 angegeben ist.
(Zur Info: in C1 stehen Artikelnummern drin, die erst bei Verfügbarkeit des Artikels feststehen. Deshalb müssen die nur zeitweise entsperrt werden. In D1 steht die Anzahl für den Artikel.)
3.ein VBA-Programm muss auf das Arbeitsblatt-Ereignis Change reagieren, die relevanten Zellen prüfen und die zu sperrenden Zellen sperren bzw die Sperrung wieder aufheben.
- ok, soweit komme ich auch, aber dann...
Gruß
Patrick
Anzeige
AW: Zellen sperren, wenn andere Zelle leer
30.03.2005 11:19:39
Luc
Hallo Patrick,
du kannst mir bis zur Ereignisprozedur Worksheet_Change im Arbeitsblatt(klassen)modul folgen?! Hast du VBA-Kenntnisse? Angegeben hast du Nein. Deine ersten VBA-Erfahrungen solltest du nicht unbedingt mit Ereignisprozeduren sammeln wollen. Die laufen nämlich in Abhängigkeit vom sie auslösenden Ereignis automatisch - ungewollte Endlosschleifen durch Selbstaufruf werden so sehr leicht möglich.
Ansonsten brauchst du einen Zyklus (For- bzw For-Each-Schleife), in dem die relevanten Zellen auf ihren Inhalt geprüft wdn und davon abhängig die .Locked-Eigenschaft der zu (ent-)sperrenden Zelle auf True (False) gesetzt wird:

Dim i As Long
For i = 1 To anzahlzeilen
If Cells(i, 3).Value = "" Then
Range(Cells(i, 3)).Locked = False
Range(Cells(i, 4)).Locked = True
Else
Range(Cells(i, 3)).Locked = True
Range(Cells(i, 4)).Locked = False
End If
Next i 

...oder falls die Markierung des betroffenen Bereichs bevorzugt wird...

Dim zelle As Range
For Each zelle In ActiveWindow.RangeSelection
If zelle.Value = "" Then
zelle.Locked = False
zelle.Offset(0, 1).Locked = True
Else
zelle.Locked = True
zelle.Offset(0, 1).Locked = False
End If
Next zelle 

Das Ganze funktioniert in eine Prozedur (sub) eines Standardmoduls verpackt bei Aufruf, in die o.g. Ereignisprozedur geschrieben automatisch bei Blattänderung. Lies unbedingt in der Online-Hilfe des Makro-Editors nach, bevor du den (nicht vollständigen!) Code einsetzt.
Gruß Luc :-?
Anzeige
AW: Zellen sperren, wenn andere Zelle leer
30.03.2005 20:57:12
Patrick
Hallo Luc,
mit VBA ansich habe ich tatsächlich recht wenig Erfahrung. Allerdings habe ich Erfahrungen in anderen Scriptsprachen, wie bspw. PHP und kenne daher durchaus die Macht von Prozeduren und Schleifen.
Es ist auch nicht so, dass ich Deinen VBA-Code nicht verstehe, mir fehlt es hauptsächlich an den entsprechenden Ausdrücken und Befehlen. Leider ist die VBA Hilfe in Excel nicht immer sehr schlüssig für Leute, die es erst erlernen müssen.
Es ist nicht so, dass ich zu faul bin es zu lernen, aber um genau das zu vermeiden was Du oben erwähnt hast. Wäer es natürlich gut, wenn Du dann nicht unebdingt Codeteile hinterlegst, sondern auch noch die letzten paar Zeilen einfügst.
Ich denke, dass ich Deinen Code vervollständigen kann; es wird aber mit Sicherheit auch Forenteilnehmer geben, die es nicht können und dann sollte man hier kein Halbwissen stehen lassen...
Gruß
Patrick
Anzeige
Das sehe ich anders (s.a. OffTopic)! -- owT
31.03.2005 10:15:22
Luc

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige