Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

End If ohne If Block

Forumthread: End If ohne If Block

End If ohne If Block
07.09.2016 12:30:46
Felix
Sehr geehrte Forumsgemeinschaft,
ich habe ein Problem mit der If Anweisung. Genauer gesagt weiß ich nicht wann ich End If benutze und wann nicht. Die Information die ich hierzu recherchiert habe ist, dass wenn hinter "Then" eine Anweisung steht, ist der If Block abgeschlossen.
Folgender Code wird von mir in zwei Makros verwendet:

If d = "" Then MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation
Exit Sub
End If

Die Makros sind exakt gleich und greifen auf gleich aufgebaute Daten und Arbeitsblätter zu. Lediglich die Werte in den Ziel-Arbeitsblättern sind unterschiedlich.
In einem Makro bekam ich die Fehlermeldung:
End If ohne If Block
als ich End If benutzte.
Also habe ich beide Makros korrigiert und End If entfernt. Jetzt funktionierte das eine Makro aber beim Anderen erhielt ich die Meldung: If Block ohne End If.
Das Ende vom Lied ist nun, dass die beiden Makros sich darin unterscheiden, dass in einem End If steht und im anderen nicht. Beide funktionieren.
Ich hoffe jemand hat eine Idee. Ich gehe davon aus, dass ich ein falsches Verständnis der If Anweisung habe, komme aber nicht dahinter.
Grüße
Felix
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: End If ohne If Block
07.09.2016 12:37:53
Rudi
Hallo,
wenn hinter Then kein Zeilenumbruch ist, ohne End If.
Gruß
Rudi
AW: End If ohne If Block
07.09.2016 12:41:37
Felix
Ich glaub's ja nicht. :)
Genau das ist es. Also waren die Codes doch nicht exakt gleich.
Vielen Dank!
AW: End If ohne If Block
07.09.2016 12:43:45
Mullit
Hallo,
die erste If-Zeile wird als eine Anw. interpretiert, darum die Fehlermeldung, entweder Du schreibst so:
Sub test()
Dim d As String
If d = "" Then
MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation
Exit Sub
End If
End Sub

oder Du läßt das End If weg:
Dim d As String
If d = "" Then MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation: Exit Sub

Gruß, Mullit
Anzeige
AW: End If ohne If Block
08.09.2016 09:05:15
Felix
Vielen Dank für die Antworten. Habe beides probiert und bin nun etwas schlauer. Mir war nicht bewusst, dass Zeilenumbrüche Einfluss auf die Prozedur haben. Ich denke, dass ich in Zukunft das ein oder andere Rätzel damit schneller lösen kann. Grüße
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

End If ohne If Block: So löst du das Problem


Schritt-für-Schritt-Anleitung

  1. Verstehen der If-Anweisung: In VBA muss jede If-Anweisung korrekt mit einem End If abgeschlossen werden, es sei denn, sie ist in einer einzelnen Zeile geschrieben.

  2. Einzeilige If-Anweisung: Wenn du eine If-Anweisung in einer Zeile schreibst, kannst du das End If weglassen. Zum Beispiel:

    If d = "" Then MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation: Exit Sub
  3. Mehrzeilige If-Anweisung: Wenn du die Anweisung über mehrere Zeilen schreibst, musst du End If verwenden. Beispiel:

    If d = "" Then
       MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation
       Exit Sub
    End If
  4. Prüfen auf Zeilenumbrüche: Achte darauf, dass du keine überflüssigen Zeilenumbrüche zwischen If und Then hast, da dies zu der Fehlermeldung End If ohne If Block führen kann.


Häufige Fehler und Lösungen

  • End If ohne If Block: Diese Fehlermeldung tritt auf, wenn du End If verwendest, aber die dazugehörige If-Anweisung nicht korrekt ist. Überprüfe, ob die If-Anweisung in einer Zeile oder mehrzeilig ist.

  • If Block ohne End If: Diese Fehlermeldung erscheint, wenn du eine mehrzeilige If-Anweisung hast, aber das End If weggelassen wurde. Stelle sicher, dass du es hinzufügst.


Alternative Methoden

  • Verwendung von Select Case: Wenn du mehrere Bedingungen prüfen musst, kann Select Case eine gute Alternative zur If-Anweisung sein. Dies verbessert die Lesbarkeit deines Codes:

    Select Case d
       Case ""
           MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation
           Exit Sub
    End Select
  • VBA Else ohne If: Manchmal kannst du die Logik umkehren und Else verwenden, ohne eine If-Anweisung zu benötigen. Dies kann helfen, den Code zu vereinfachen.


Praktische Beispiele

Hier sind zwei Beispiele, die die Verwendung von If und End If verdeutlichen:

  1. Beispiel mit mehrzeiligem If-Block:

    Sub Beispiel1()
       Dim d As String
       If d = "" Then
           MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation
           Exit Sub
       End If
    End Sub
  2. Beispiel mit einzeiligem If-Block:

    Sub Beispiel2()
       Dim d As String
       If d = "" Then MsgBox ("Keine Daten in Sonstige Reihen gefunden"), vbInformation: Exit Sub
    End Sub

Tipps für Profis

  • Code-Formatierung: Achte darauf, deinen VBA-Code gut zu formatieren. Das erleichtert das Lesen und das Debuggen. Verwende Einrückungen für mehrzeilige If-Anweisungen.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem Code, um bei unerwarteten Eingaben die Ausführung zu steuern.

  • Verwende Kommentare: Kommentiere deinen Code, um die Logik hinter komplexen If-Anweisungen zu erklären, besonders wenn du mit vba end if arbeitest.


FAQ: Häufige Fragen

1. Warum bekomme ich die Fehlermeldung „End If ohne If Block“?
Diese Fehlermeldung tritt auf, wenn du ein End If verwendest, aber die dazugehörige If-Anweisung nicht korrekt geschrieben ist. Prüfe, ob du die Anweisung korrekt beendet hast.

2. Kann ich End If weglassen?
Ja, du kannst End If weglassen, wenn deine If-Anweisung in einer einzigen Zeile steht. Achte jedoch auf die korrekte Syntax.

3. Was ist der Unterschied zwischen If und Select Case?
If wird verwendet, um Bedingungen zu prüfen, während Select Case eine bessere Lesbarkeit bietet, wenn du mehrere Bedingungen hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige