Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

If ... Else funktioniert ohne Else?

Forumthread: If ... Else funktioniert ohne Else?

If ... Else funktioniert ohne Else?
Reinhard
Hallo Wissende,
in einer Fremdmappe sah ich diesen Code im Modul einer Userform.
btnAbbrechen ist ein Commandboutton auf der UF.

Private Sub btnAbbrechen_Click()
Dim a
a = MsgBox("Wollen Sie die Erfassungsmaske ohne Speicherung beenden?", vbYesNo)
If a = vbNo Then Exit Sub Else
Unload Me
End Sub
Wieso funktienert der Code? Wieso meldet sich der Debugger nicht und reklamiert "End If" an?
Bei

Private Sub btnAbbrechen_Click()
Dim a
a = MsgBox("Wollen Sie die Erfassungsmaske ohne Speicherung beenden?", vbYesNo)
If a = vbNo Then
Exit Sub
Else
Unload Me
End If
End Sub
oder

Private Sub btnAbbrechen_Click()
Dim a
a = MsgBox("Wollen Sie die Erfassungsmaske ohne Speicherung beenden?", vbYesNo)
If a = vbNo Then Exit Sub
Unload Me
End Sub
hätte ich hier nicht nachgefragt. Mit Haltepunkt und F8 sehe ich daß "Else" gar nicht "angesprungen wird wenn a VBNo ist es wird gleich zu "Unload Me" "gehüpft".
Gruß
Reinhard
Anzeige
AW: If ... Else funktioniert ohne Else?
16.06.2011 14:49:52
Rudi
Hallo,
bei nem einzeiligen If braucht's kein End If, bzw darf kein End If.
Allerdings ist Else hier überflüssig, da nichts angegeben. Kannst ja mal was hinter schreiben.
If Bedingung then
tu was
Else
End If

funktioniert ja auch.
Gruß
Rudi
Anzeige
AW: If ... Else funktioniert ohne Else?
16.06.2011 16:13:14
Reinhard
Hallo Rudi,
also "übersieht" der ansonsten strenge Debugger bei
If 1 = 1 Then MsgBox "huhu" Else
das "Else", aber hier (so wie ich es gewohnt bin) nicht und reklamiert es:
MsgBox "huhu" Else
Wenn dem so ist dann ist meine Anfrage gelöst/beendet.
Danke
Gruß
Reinhard
Anzeige
AW: If ... Else funktioniert ohne Else?
16.06.2011 16:23:18
Rudi
Hallo,
Else ohne If geht nicht.
Gruß
Rudi
AW: If ... Else funktioniert ohne End If?
16.06.2011 17:11:21
Reinhard
Hallo Rudi,
"Else ohne If geht nicht."
das habe ich doch gar nicht behauptet. In:
If 1 = 1 Then MsgBox "huhu" Else
steht das "Else" hinten in der Codezeile funktionslos rum.
In anderen Codezeilen ohne If vorne würde der Debugger das sofort bemängeln daß da irgendein Term einfach so hinten in einer Zeile steht.
PS: habe den Betreff korrigiert :-)
Gruß
Reinhard
Anzeige
AW: If ... Else funktioniert ohne End If?
16.06.2011 19:20:29
Christian
Hallo Reinhard,
If 1 = 1 Then MsgBox "huhu" Else
...steht das "Else" hinten in der Codezeile funktionslos rum...

ja, da ist ist die "Sonst-Anweisung" überflüssig genau wie bei:
If 1 = 1 Then
MsgBox "huhu"
Else
End If
Das hat Rudi dir ja bereits erklärt.
Über was du stolperst ist offensichtlich, dass man eine If-Anweisung auch in einer Zeile schreiben kann und dann wird diese nicht mit einem "End If" abgeschlossen.
Gruß
Christian
Anzeige
AW: If ... Else funktioniert ohne End If?
17.06.2011 14:37:06
MichaV
Hier mal kürzest möglichen If-Anweisungen zur Verdeutlichung. 1 und 3 sind Zeilen, ohne EndIf. 2 und 4 sind Blöcke, die müssen mit EndIf abgeschlossen werden.
Hinter dem If muss ein Wahheitswert stehen, hinter dem Else jedoch nicht.

Option Explicit
Sub test()
'1
If True Then:
'2
If True Then
End If
'3
If True Then Else
'4
If True Then
Else
End If
End Sub
Gruss- Micha
Anzeige
1) und §) liegt mir noch schwer im Magen aber
17.06.2011 19:22:09
Reinhard
Hallo Michael, Christian, Rudi,
2) und 4) verstehe ich, die sind kein Problem, so bin ich das gewohnt.
1) und 3), nunja, ... :-)
Aber bitte, laßt's mal gut sein.
Ich zumindest werde hinten in einer IF-Codezeile kein für mich unnötiges Else hinschreiben.
Wenn ich Fremdcode damit sehe, okay dann weiß ich der funktioniert trotzdem also alles in Butter.
Schönes WE *wünsch*
Gruß
Reinhard
Anzeige
:) mT
17.06.2011 19:41:05
MichaV
mir liegt mein letzter Satz (der vor dem Option Explicit) noch schwer im Magen... so ein gewurschtel.
Das solte da stehen:
Hinter dem If muss ein Warheitswert stehen, hinter dem Then und dem Else kanns aber leer bleiben.
Naja, Du hast es ja inzwischen aufgegeben :o)
Dir auch ein schönes WE -

Option Explicit
Sub fuer_reinhad()
If True Then MsgBox "Gruss- Micha" Else
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

If ... Else: So funktioniert es in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine If ... Else-Anweisung zu verwenden, folge diesen einfachen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste im Projektfenster und wähle "Einfügen" > "Modul".
  3. Schreibe deine If-Anweisung:
    Sub Beispiel()
       Dim a As Integer
       a = 10
       If a > 5 Then
           MsgBox "a ist größer als 5"
       Else
           MsgBox "a ist 5 oder kleiner"
       End If
    End Sub
  4. Führe das Skript aus: Drücke F5, um das Skript auszuführen und die Nachricht zu sehen.

Beachte, dass in einer einzeiligen If-Anweisung kein End If erforderlich ist. Beispiel:

If a > 5 Then MsgBox "a ist größer als 5"

Häufige Fehler und Lösungen

  • Fehler: "End If erwartet": Dieser Fehler tritt häufig auf, wenn du eine If ... Else-Anweisung nicht korrekt abgeschlossen hast. Stelle sicher, dass du End If verwendest, wenn du mehrere Zeilen innerhalb des If-Blocks hast.

  • Fehler: Else ohne If: Dieser Fehler tritt auf, wenn du ein Else ohne ein vorhergehendes If verwendest. Überprüfe deinen Code auf korrekt platzierte Anweisungen.

  • Bedingungen nicht erfüllt: Wenn dein If-Block nicht die erwartete Ausführung zeigt, überprüfe die Bedingungen auf Richtigkeit.


Alternative Methoden

Es gibt mehrere Möglichkeiten, If ... Else-Anweisungen in Excel VBA zu verwenden:

  1. IIf-Funktion: Diese Funktion erlaubt es, Bedingungen in einer einzigen Zeile auszudrücken:

    MsgBox IIf(a > 5, "a ist größer als 5", "a ist 5 oder kleiner")
  2. Select Case: Eine nützliche Alternative für mehrere Bedingungen:

    Select Case a
       Case Is > 5
           MsgBox "a ist größer als 5"
       Case Else
           MsgBox "a ist 5 oder kleiner"
    End Select

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von If ... Else in Excel VBA:

  1. Beispiel für eine Benutzerabfrage:

    Private Sub btnAbbrechen_Click()
       Dim a As Integer
       a = MsgBox("Wollen Sie die Erfassungsmaske ohne Speicherung beenden?", vbYesNo)
       If a = vbNo Then Exit Sub Else Unload Me
    End Sub

    In diesem Beispiel wird der Benutzer gefragt, ob er die Erfassungsmaske schließen möchte. Es wird Exit Sub verwendet, um die Subroutine zu beenden, wenn der Benutzer "Nein" wählt.

  2. Einzeilige If-Anweisung:

    Sub Test()
       Dim a As Integer
       a = 10
       If a < 5 Then MsgBox "a ist kleiner als 5" Else MsgBox "a ist 5 oder größer"
    End Sub

Tipps für Profis

  • Verwende einzeilige If-Anweisungen für einfache Bedingungen, um deinen Code kompakt und leserlich zu halten.
  • Nutze Select Case für komplexe Entscheidungen, um die Lesbarkeit zu erhöhen.
  • Fehlerbehandlung einfügen: Verwende On Error Resume Next, um Fehler zu ignorieren, oder On Error GoTo, um spezifische Fehlerbehandlungsroutinen zu erstellen.

FAQ: Häufige Fragen

1. Kann ich Else ohne If verwenden?
Nein, Else muss immer mit einer If-Anweisung verbunden sein.

2. Was ist der Unterschied zwischen If ... Else und Select Case?
If ... Else eignet sich für einfache Bedingungen, während Select Case besser geeignet ist, wenn du mehrere mögliche Werte prüfen musst.

3. Wie kann ich mehrere Bedingungen in einer If-Anweisung kombinieren?
Du kannst And oder Or verwenden, um mehrere Bedingungen zu prüfen:

If a > 5 And a < 10 Then MsgBox "a ist zwischen 5 und 10"

4. Gibt es Unterschiede zwischen Excel-Versionen?
Die grundlegenden If ... Else-Anweisungen sind in den meisten Excel-Versionen gleich. Achte jedoch darauf, dass einige Funktionen in älteren Versionen möglicherweise nicht verfügbar sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige