Makro - Nach Zell eingabe, gewiese Zellen Entsperren oder Sperren!
#1
Hallo Excel Freunde

Ich Habe im Internet gesucht und Viele verschiedene Möglich keiten Probiert und nichts geht da von.
Das ist Klar:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

* Wenn die Zelle ("F6") Nicht leer ist , dann:
Code:
Range("F8, I6:I9, K6:L6, K7, H11:H130").Locked = False
Range("F9, K9:M9").Locked = True
-Oder wenn die Zelle ("F6") leer ist, dann:
Code:
Range("F8, I6:I9, K6:L6, K7, H11:H130, F9, K9:M9").Locked = True

* Wenn die Zelle ("I7") Nicht leer ist, dann:
Code:
Range("F9").Locked = False
Range("I8:I9").Locked = True
Oder wenn die Zelle ("I7") leer ist, Dann:
Code:
Range("I8:I9").Locked = False
Range("F9").Locked = True

u.s.w.

Mein Problem ist Das ganze Makro: F6 und I7 gehen aber I8 und I9 Gehen nicht.

Hier der Ganze Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("F6") = "" Then
   ActiveSheet.Unprotect Password:="Geheim"
       Range("F8, I6:I9, K6:L6, K7, H11:H130, F9, K9:M9").Locked = True
   ActiveSheet.Protect Password:="Geheim", DrawingObjects:=True, Contents:=True, Scenarios:=True
   Range("F6").Select
ElseIf Target.Address = "$F$6" Then
   ActiveSheet.Unprotect Password:="Geheim"
       Range("F8, I6:I9, K6:L6, K7, H11:H130").Locked = False
   ActiveSheet.Protect Password:="Geheim", DrawingObjects:=True, Contents:=True, Scenarios:=True
ElseIf Range("I7") = "" Then
   ActiveSheet.Unprotect Password:="Geheim"
       Range("F8, I6:I9, K6:L6, K7, H11:H130").Locked = False
       Range("F9").Locked = True
   ActiveSheet.Protect Password:="Geheim", DrawingObjects:=True, Contents:=True, Scenarios:=True
ElseIf Target.Address = "$I$7" Then
   ActiveSheet.Unprotect Password:="Geheim"
       Range("F9").Locked = False
       Range("I8:I9").Locked = True
   ActiveSheet.Protect Password:="Geheim", DrawingObjects:=True, Contents:=True, Scenarios:=True
ElseIf Range("I8") = "" Then
   ActiveSheet.Unprotect Password:="Geheim"
       Range("F8, I6:I9, K6:L6, K7, H11:H130").Locked = False
       Range("F9").Locked = True
   ActiveSheet.Protect Password:="Geheim", DrawingObjects:=True, Contents:=True, Scenarios:=True
ElseIf Target.Address = "$I$8" Then
   ActiveSheet.Unprotect Password:="Geheim"
       Range("F9").Locked = False
       Range("I7, I9").Locked = True
   ActiveSheet.Protect Password:="Geheim", DrawingObjects:=True, Contents:=True, Scenarios:=True
'Elseif auch noch für F9.
End If
Application.EnableEvents = True
End Sub

Was mache ich Falsch das ab I8 das nicht mehr Sperrt oder Endsperrt?

Kann mir da jemand bitte Helfen?
Bin beim verzweifeln!

MfG BD
Top
#2
Hallo,

dann ist die Bedingung für die Zelle F6 oder I7 erfüllt und bei elseif gilt nur eine Bedingung als erfüllt.

Nachtrag: Auszug aus der OH zu If-Bedingung.

Zitat:Bei der Ausführung eines If-Blocks (zweite Syntax) wird zunächst Bedingung überprüft. Ergibt Bedingung den Wert True, so werden die Anweisungen im Anschluß an Then ausgeführt. Ergibt Bedingung den Wert False, so werden die ElseIf-Bedingungen (sofern vorhanden) der Reihe nach ausgewertet. Sobald eine dieser Bedingungen True ergibt, werden die Anweisungen im Anschluß an das zugehörige Then ausgeführt. Ergibt keine der ElseIf-Bedingungen True (oder sind überhaupt keine ElseIf-Abschnitte vorhanden), so werden die Anweisungen im Anschluß an Else ausgeführt. Sobald die Anweisungen nach einem Then- oder Else-Abschnitt ausgeführt wurden, setzt das Programm die Ausführung mit der Anweisung im Anschluß an End If fort.
Nachtrag2: Deine Konstrukt paßt so nicht. Setze mal einen Haltepunkt (F9-Taste) und teste das mal im Einzelschrittmodus (F8-Taste).
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste