Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
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


Hallo liebes Forum!!
Ich stehe gerade komplett (mal wieder auf dem Schlauch)!..
Ich habe einen umfangreichen VBA-Code mit Arrays. Nun möchte ich, dass in der Spalte 3 geguckt wird, ob die Zahl 2,3,7,9,11 oder 13 in dieser Zelle steht. Ist einer dieser Zahlen vorhanden, dann soll eine Va...
Anzeige

https://www.herber.de/bbs/user/58957.xls
Hallo,
wer kann mir bei folgendem Problem helfen? Da ich ein blutiger VBA-Anfänger bin, sind alle meine bisherigen Versuche bereits im Ansatz gescheitert. Daher bitte ich euch um eure Hilfe! Sollte jemand einen Programmcode schreiben, bitte ich...

Hallo zusammen.
In meiner Tabelle A, B, C, D (à 10 Zeilen) soll die jeweiligeSpalte gesperrt werden wenn in der Überschrift ein X steht.
Das soll heißen:
Wenn A1 = X dann sperre A2:A10
Wenn A1 = "" dann lass A2:A10 entsperrt
https://www.herber.de/bbs/user/71912.xls
Mit d...
Anzeige

Hi zusammen!
Ich habe (mal wieder) ein Problem und hoffe, dass ihr mir weiterhelfen könnt.
Ich habe zwei Tabellen:
Die obere Tabelle zeigt die verfügbaren Kapazitäten von vier Lagern, in die Produkte eingelagert werden können.
In der unteren Tabelle sind Liefermengen von Produk...

Hallo zusammen,
ich bin wieder an einem Punkt angekommen, wo man den Baum vor lauter Bäumen nicht mehr sieht, glaube ich zumindest. Vielleicht sieht ja jemand von euch den Baum bzw. das Brett vor meinen Kopf.
Folgende Ausgangslage.
Ich habe eine Tabelle in der immer wieder neue Date...

Guten Morgen,
ich habe folgende zwei Makros erstellt:
Sub Makro15_Differenzen_markieren() 'Markiert Zellen rot, wenn Differenzen > 30 ActiveSheet.Select 'Startzeile startzeile = 3 'Spalte die geprüft wird Spalte = 83 startzeile2 = 3 Letzte_Zeile = Range(Cells(65536, Spalte), Cells(65...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige