Grundlagen Bedingte (mehrfach-) Verzweigung:
If Bedingung1 Then
Anweisung1
ElseIf Bedingung2 Then
Anweisung2
ElseIf Bedingung3 Then
Anweisung3
ElseIf ...
...
Else
SonstAnweisung
End If
WeitereAnweisungen
Wenn Bedingung1 nicht wahr ist, wird Bedingung2 geprüft. Ist Bedingung2 nicht wahr, dann wird Bedingung3 geprüft... und so weiter.
Wenn alle Bedingungen vor dem Else nicht wahr sind, dann wird SonstAnweisung ausgeführt. UND dann geht es nach dem End If mit WeitereAnweisungen weiter.
Ein paar Anmerkungen zu deinem Code:
1) Dein Einrücken verwirrt beim lesen. Die markierten Zeilen sind unnötig eingerückt worden.
Sie müssten sich eigentlich auf der selben Einrückebene wie die davor stehende If Not ... Then befinden.
ElseIf IsEmpty(Worksheets("Test1").Cells(row_number, 2).Value) = True Then
this_row = row_number + 1
If Not IsEmpty(Worksheets("Test1").Cells(this_row, 2).Value) = True Then
row_number = row_number + 4
MsgBox "Im in Else!"
End If
MsgBox "Im in End If!"
new_row = row_number + 1
paste_row = "B" & CStr(new_row)
Worksheets("Test2").Range("B3:K29").Cut Worksheets("Test1").Range(paste_row)
t = 1000
2) Redundante Prüfung machen keinen Sinn.
In der ersten If prüfst du ob die Zelle Nicht Empty ist. Wenn das nicht der Fall ist, dann ist beim kommenden Else schon klar, das sie es ist und man muss das nicht noch mal prüfen (aus dem ElseIf würde also einfach ein Else werden).
If Not IsEmpty(Worksheets("Test1").Cells(row_number, 2).Value) = True Then
<Anweisung1>
ElseIf IsEmpty(Worksheets("Test1").Cells(row_number, 2).Value) = True Then
<Anweisung2>
2.1) Auch noch ein Punkt, den Anfänger häufig tun.
If Bedingung = True Then
...
Eine Bedingung ergibt entweder Wahr oder Falsch. Man muss das Wahr-Ergebnis nicht noch mal auf Wahr überprüfen (erneut, unnötige: Redundanz).
Weniger verwirrend und ausreichend:
If Bedingung Then
...
Der Einzige Fall wenn was dahinter kommt, ist wenn man den Falsch Zustand abfragen wöllte.
If Bedingung = False Then
...
Alternative Schreibweise:
If Not Bedingung Then
...
Grüße
|