Anzeige
Archiv - Navigation
1124to1128
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

Verschachtelte IF-Anweisungen

Verschachtelte IF-Anweisungen
Nicole
Hallo alle zusammen,
meine IFs funktionieren, solange ich das ELSE auskommentiert habe, da alle hintereinander stehen. Stelle ich das ELSE mit herein, ist alles rot!!. Wie verschachtele ich richtig, so dass das ELSE nur zum Tragen kommt, falls keine der anderen IFs ein Ergebnis liefert?
For n = 0 To Zeilen - 1
Set Z1 = Range("B7").Offset(n, 10)
Set Z2 = Range("B7").Offset(n, 11)
Set Z3 = Range("B7").Offset(n, 7)
Set Z4 = Range("B7").Offset(n, 9)
If Z2 = "" Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbWhite
End If
If Z3 = "" Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbWhite
End If
If Z3 = "A" Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbWhite
End If
If Z3 = "V" And Format(Z1, "yyyyMM") = Z2 Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbGreen
End If
If Z3 = "G" And Format(Z4, "yyyyMM") = Z2 Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbGreen
' Else
' Z2.Offset(0, 1).Value = "nicht OK"
' Z2.Offset(0, 1).Interior.Color = vbRed
End If
Next n
Vielen Dank für die Hilfe im voraus.
Nicole

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Verschachtelte IF-Anweisungen
15.12.2009 11:40:44
Philipp
So vielleicht
Sub test()
For n = 0 To Zeilen - 1
Set Z1 = Range("B7").Offset(n, 10)
Set Z2 = Range("B7").Offset(n, 11)
Set Z3 = Range("B7").Offset(n, 7)
Set Z4 = Range("B7").Offset(n, 9)
If Z2 = "" Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbWhite
Else
Z2.Offset(0, 1).Value = "nicht OK"
Z2.Offset(0, 1).Interior.Color = vbRed
End If
Select Case Z3
Case ""
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbWhite
Case "A"
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbWhite
Case "G"
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbGreen
Case Else
Z2.Offset(0, 1).Value = "nicht OK"
Z2.Offset(0, 1).Interior.Color = vbRed
End Select
Next n
End Sub

Anzeige
AW: Verschachtelte IF-Anweisungen
15.12.2009 14:15:25
Nicole
hab mir auch schon gedacht, mit CASE zu arbeiten, aber was mach ich mit den 2fach-Bedingungen? In CASE kann ich ja nicht mit AND arbeiten oder?
Ich brauche ja als CASE:
If Z3 = "V" And Format(Z1, "yyyyMM") = Z2 Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbGreen
End If
Die Zelle muss also ein V enthalten und das Datum einer anderen Zelle muss gleich dem Datum einer 3. Zelle sein. Wie geht das?
AW: Verschachtelte IF-Anweisungen
15.12.2009 14:15:25
Nicole
hab mir auch schon gedacht, mit CASE zu arbeiten, aber was mach ich mit den 2fach-Bedingungen? In CASE kann ich ja nicht mit AND arbeiten oder?
Ich brauche ja als CASE:
If Z3 = "V" And Format(Z1, "yyyyMM") = Z2 Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbGreen
End If
Die Zelle muss also ein V enthalten und das Datum einer anderen Zelle muss gleich dem Datum einer 3. Zelle sein. Wie geht das?
Anzeige
einfach nach CASE das IF
15.12.2009 14:25:55
Björn
Hallo Nicole,
Du baust das Teil mit CASE auf und nach CASE = "V" bringst Du in der nächsten Zeile Deine If-Bedingung.
Müsste in etwas so aussehen (nicht getestet!!!):

Case = "V"
If Format(Z1, "yyyyMM") = Z2 Then
Z2.Offset(0, 1).Value = "OK"
Z2.Offset(0, 1).Interior.Color = vbGreen
End If
Gruß
Björn B.
AW: einfach nach CASE das IF
15.12.2009 15:48:20
Nicole
super, danke, funktioniert. Für spätere Interessenten hier der Code (ein wenig abgespeckt). Abgefragt wird, was in einer Spalte Z3 steht und zusätzlich werden noch zwei Datumswerte miteinander verglichen, von dem einer ein Textformat hat:
Dim bereich As Range, Z1 As Range, Z2 As Range
Dim Zeilen As Long, n As Long
Set bereich = Range("B7").CurrentRegion
Zeilen = bereich.Rows.Count
For n = 0 To Zeilen - 1
Set Z1 = Range("B7").Offset(n, 10) 'Datum 1
Set Z2 = Range("B7").Offset(n, 11) 'Datum als Text
Set Z3 = Range("B7").Offset(n, 7) 'Abgleichszelle z.B. Sportarten
Select Case Z3
Case ""
Z2.Offset(0, 1).Value = "keine Sportart vorhanden"
Z2.Offset(0, 1).Interior.Color = vbWhite
Case "Squash"
If Z2 = "" Then
Z2.Offset(0, 1).Value = "kein Textdatum"
Z2.Offset(0, 1).Interior.Color = vbWhite
Else
Z2.Offset(0, 1).Value = "Squash ist da"
Z2.Offset(0, 1).Interior.Color = vbGreen
End If
Case "Laufen"
If Z2 = "" Then
Z2.Offset(0, 1).Value = "kein Textdatum"
Z2.Offset(0, 1).Interior.Color = vbWhite
Else
If Format(Z1, "yyyyMM") = Z2 Then
Z2.Offset(0, 1).Value = "Laufen ist da"
Z2.Offset(0, 1).Interior.Color = vbGreen
Else
Z2.Offset(0, 1).Value = "die Datumswerte stimmen nicht überein"
Z2.Offset(0, 1).Interior.Color = vbRed
End If
End If
Case Else
Z2.Offset(0, 1).Value = "nicht OK"
Z2.Offset(0, 1).Interior.Color = vbRed
End Select
Next n
Anzeige

73 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige