Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten Top


Gehe zu:


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