Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1436to1440
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
Inhaltsverzeichnis

IF-If-Then-Else-Anweisung; wie Bedingungen verknüpfen?

IF-If-Then-Else-Anweisung; wie Bedingungen verknüpfen?
14.07.2015 10:07:15
Fritz
Hallo zusammen,
bin, was Excel betrifft, noch ziemlich in der Kinderschuhen…
möchte folgende Bedingungen verknüpfen, kriege es aber nicht hin:

Private Sub Worksheet_sperren()
Dim Wks As Worksheet
Set Wks = ActiveSheet
If Target.Address = "$C$25" Then
If Target = "CLOSED" Then
Range("D25:D26:D27:E25:E26:E27").Locked = True
Else
Range("D25:D26:D27:E25:E26:E27").Locked = False
End If
If Target.Address = "$F$25" Then
If Target = "CLOSED" Then
Range("G25:G26:G27:H25:H26:H27").Locked = True
Else
Range("G25:G26:G27:H25:H26:H27").Locked = False
End If
usw.
End If
End Sub

es liegt am verknüpfen, denn nur mit einer Bedingung läuft's:

Private Sub Worksheet_sperren()
Dim Wks As Worksheet
Set Wks = ActiveSheet
If Target.Address = "$C$25" Then
If Target = "CLOSED" Then
Range("D25:D26:D27:E25:E26:E27").Locked = True
Else
Range("D25:D26:D27:E25:E26:E27").Locked = False
End If
End If
End Sub
Vielen Dank für Eure Hilfe!
MfG, Fritz

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

Betreff
Datum
Anwender
Anzeige
AW: IF-If-Then-Else-Anweisung; wie Bed verknüpfen?
14.07.2015 10:16:18
Daniel
Hi
du musst die IFs auch sauber abschließen, oder mit ElseIF arbeiten, wenns mehrere Varianten gibt:
a) sauber abgeschlossene einzelne IF-Blöcke:
Private Sub Worksheet_sperren()
Dim Wks As Worksheet
Set Wks = ActiveSheet
If Target.Address = "$C$25" Then
If Target = "CLOSED" Then
Range("D25:D26:D27:E25:E26:E27").Locked = True
Else
Range("D25:D26:D27:E25:E26:E27").Locked = False
End If
End If
If Target.Address = "$F$25" Then
If Target = "CLOSED" Then
Range("G25:G26:G27:H25:H26:H27").Locked = True
Else
Range("G25:G26:G27:H25:H26:H27").Locked = False
End If
End If
usw.
End Sub
b) mehrere Bedinungen mit ElseIF
Private Sub Worksheet_sperren()
Dim Wks As Worksheet
Set Wks = ActiveSheet
If Target.Address = "$C$25" Then
If Target = "CLOSED" Then
Range("D25:D26:D27:E25:E26:E27").Locked = True
Else
Range("D25:D26:D27:E25:E26:E27").Locked = False
End If
ElseIf Target.Address = "$F$25" Then
If Target = "CLOSED" Then
Range("G25:G26:G27:H25:H26:H27").Locked = True
Else
Range("G25:G26:G27:H25:H26:H27").Locked = False
End If
ElseIF ...
Else
End If
End Sub
da sich hier hier die einzelnen Bedingungen gegenseitig ausschließen, ist Variante b) die bessere.
Variante a) ist für den Fall, dass sich die einzelnen Bediungungen nicht gegenseitig ausschließen und dann ggf beide Teile ausgeführt werden müssen.
Gruß Daniel

Anzeige
AW: noch ein Tip:
14.07.2015 10:34:52
Daniel
den Inneren IF-Block kannst du dir sparen, denn der Ausdruck: Target = "CLOSED" erzeugt den notwendigen Wahrheitswert:
If Target.Address = "$C$25" Then
Range("D25:D26:D27:E25:E26:E27").Locked = (Target = "CLOSED")
ElseIf Target.Address = "$F$25" Then
Range("G25:G26:G27:H25:H26:H27").Locked = (Target = "CLOSED")
ElseIF ...

wenn die Regelmäßigkeit der Zellbezüge gegeben ist, kannst du noch weiter vereinfachen:
Select Case Target.Address
Case "$C$25", "$F$25", ... hier weitere Adressen eintragen wenn erforderlich
Target.Offset(0, 1).Resize(3, 2).Locked = (Target = "CLOSED")
Case Else
End Select
Gruß Daniel

Anzeige
AW: noch ein Tip:
14.07.2015 14:15:50
Fritz
Hallo Daniel,
der zusätzliche Tip ist genial und erleichtert vieles!!! Besten Dank!
noch eine kleine Frage, wie müsste es in diesem Fall aussehen, wenn noch eine zusätzliche Bedingung rein müsste:
Private Sub Worksheet_sperren()
Dim Wks As Worksheet
Set Wks = ActiveSheet
Select Case Target.Address
Case "$C$25", "$F$25", ... hier weitere Adressen eintragen wenn erforderlich
Target.Offset(0, 1).Resize(3, 2).Locked = (Target = "CLOSED")
Case Else
End Select
Select Case Target.Address
Case "$C$28"
Target.Offset(-3, 2).Locked = (Target = "No Option 1")
Case Else
End Select
End Sub

Anzeige
AW: noch ein Tip:
14.07.2015 14:23:38
Daniel
Hi
du kannst bei SelectCase auch mehrere Bediungugen, die sich gegenseitig ausschließen haben, das funktioniert dann ähnlich wie das ElseIF:

Select Case Target.Address
Case "$C$25", "$F$25", ... hier weitere Adressen eintragen wenn erforderlich
Target.Offset(0, 1).Resize(3, 2).Locked = (Target = "CLOSED")
Case "$C$28"
Target.Offset(-3, 2).Locked = (Target = "No Option 1")
Case Else
End Select

Gruß Daniel

AW: noch ein Tip:
15.07.2015 08:18:44
Fritz
Super! vielen Dank nochmal, Daniel!
Gruss, Fritz

AW: IF-If-Then-Else-Anweisung; wie Bed verknüpfen?
14.07.2015 10:41:46
Fritz
Genial! Besten Dank Daniel!!!
Gruss, Fritz
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige