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 :-?