Rückkehr in VBA-Code-Beispiele

VBA If, ElseIf, Else (die ultimative Anleitung für If-Anweisungen)

VBA If-Anweisung

if anweisung schleife mit verzweigung

If Then

Mit VBA If-Anweisungen können Sie testen, ob Ausdrücke WAHR oder FALSCH sind, und basierend auf den Ergebnissen unterschiedlichen Code ausführen.

Schauen wir uns ein einfaches Beispiel an:

If Range("A2").Value > 0 Then Range("B2").Value = "Positiv"

Dieser Test wertet aus, ob der Wert in Range A2 größer als 0 ist. Wenn dem so ist, wird der Bereich B2 gleich „Positiv“ gesetzt.

if anweisung wenn dann

 

Hinweis: Beim Testen von Bedingungen werden wir die Vergleichsoperatoren =, >, <, <>, <=, >= verwenden. Wir werden sie später in diesem Artikel ausführlicher besprechen.

Die Syntax für eine einfache einzeilige If-Anweisung sieht wie folgt aus:

If [Bedingung] then [Ausführung]

Um die Lesbarkeit zu verbessern, kann ein Zeilenfortsetzungszeichen (Unterstrich) verwendet werden, um eine If-Anweisung auf zwei Zeilen zu brechen (wie wir es im obigen Bild bereits getan haben):

If [Bedingung] then _
    [Ausführung]
If Range("A2").Value > 0 Then _
    Range("B2").Value = "Positiv"

End If

Die obige „einzeilige“ If-Anweisung funktioniert gut, wenn Sie nur eine Bedingung testen. Aber wenn Ihre If-Anweisungen mehr als eine Bedingung enthalten, müssen Sie dies gesamte If-Anweisung mit einem „End If“ abschließen:

If Range("A2").Value > 0 Then
    Range("B2").Value = "Positiv"
End If

if anweisung end if

So lautet die Syntax:

If [Bedingung] then
    [Ausführung]
End If

Das End If kennzeichnet das Ende der if-Anweisung.

Fügen wir zusätzlich noch ein ElseIF ein:

 

ElseIF – Mehrere Bedingungen

Ein ElseIf wird an eine bestehende If-Anweisung angehängt. ElseIf testet, ob eine Bedingung erfüllt ist, NACHDEM alle vorherigen Bedingungen nicht erfüllt wurden.

Im vorherigen Beispiel haben wir getestet, ob ein Zellwert positiv ist. Jetzt werden wir mit einem anschließenden ElseIf auch testen, ob der Zellwert negativ ist:

If Range("A2").Value > 0 Then
    Range("B2").Value = "Positiv"
ElseIf Range("A2").Value < 0 Then
    Range("B2").Value = "Negativ"
End If

if anweisung elseif

 

Sie können mehrere ElseIfs verwenden, um mehrere Bedingungen aneinander zu ketten:

Sub Wenn_Mehrere_Bedingungen()

    If Range("A2").Value= "Katze" Then
        Range("B2").Value = "Miau"
    ElseIf Range("A2").Value = "Hund" Then
        Range("B2").Value = "Wuff"
    ElseIf Range("A2").Value = "Ente" Then
        Range("B2").Value = "Quak"
    End If

End Sub

if anweisung viele bedingungen

 

Nun fügen wir ein Else hinzu:

 

Else

Der Else-Block wird ausgeführt, wenn keine der vorherigen Bedingungen erfüllt sind.

Wir beenden unser Beispiel, indem wir ein Else verwenden, um anzugeben, dass der Zellwert, wenn er nicht positiv oder negativ ist, Null sein muss:

Nachdem wir den Wert der Zelle erfolglos auf positive und negative Zahlen getestet haben, beenden wir unser Beispiel mit dem Schluss, dass der Wert Null sein muss.

If Range("A2").Value > 0 Then
    Range("B2").Value = "Positiv"
ElseIf Range("A2").Value < 0 Then
    Range("B2").Value= "Negativ"
Else
    Range("B2").Value = "Null"
End If

if anweisung sonst else

If-Else

Die häufigste Art der If-Anweisung ist ein einfaches If-Else:

Sub Wenn_Dann()
    If Range("A2").Value > 0 Then
        Range("B2").Value = "Positiv"
    Else
        Range("B2").Value = "Nicht positiv"
    End If
End Sub

if anweisung wenn dann if else

 

Verschachtelte IFs

Sie können If-Anweisungen auch ineinander „verschachteln“.

Sub Verschachtelte_Ifs()
    If Range("A2").Value > 0 Then
        Range("B2").Value = "Positiv"
    Else
        If Range("A2").Value < 0 Then
            Range("B2").Value = "Negativ"
        Else
            Range("B2").Value= "Null"
        End If
    End If
End Sub

if anweisung verschachtelte wenn bedingungen

 

IF – Oder, Und, Xoder, Nicht

Als nächstes werden wir die logischen Operatoren besprechen: Or, And, Xor, Not.

Wenn Oder

Der Operator Or testet, ob mindestens eine Bedingung erfüllt ist.

Der folgende Code testet, ob der Wert in Bereich A2 kleiner als 5.000 oder größer als 10.000 ist:

If Range("A2").Value < 5000 Or Range("A2").Value > 10000 Then
    Range("B2").Value = "Außerhalb des Bereichs"
End If

if anweisung wenn oder

 

Sie können mehrere Ors in einer Zeile aufnehmen:

If Range("A2").Value < 5000 Or Range("A2").Value > 10000 Or Range("A2").Value = 9999 Then
    Range("B2").Wert = "Außerhalb des Bereichs"
End If

Wenn Sie mehrere Ors verwenden wollen, empfiehlt es sich, ein Zeilenfortsetzungszeichen zu verwenden, um Ihren Code lesbarer zu machen:

If Range("A2").Value < 5000 Or _
   Range("A2").Value > 10000 Or_
   Range("A2").Value = 9999 Then

       Range("B2").Value = "Außerhalb des Bereichs"

End If

if anweisung wenn mehrfach oder

 

Wenn Und

Mit dem And-Operator können Sie testen, ob ausnahmslos ALLE Bedingungen erfüllt sind.

If Range("A2").Value >= 5000 And Range("A2").Value <= 10000 Then
    Range("B2").Value = "Innerhalb des Bereich"
End If

if anweisung wenn and

If Xor

Mit dem Xor-Operator können Sie testen, ob genau eine Bedingung erfüllt ist (ausschließendes Oder). Wenn null Bedingungen erfüllt sind, gibt Xor FALSE zurück, wenn zwei oder mehr Bedingungen erfüllt sind, gibt Xor ebenfalls false zurück.

Ich habe den Xor-Operator selten in der VBA-Programmierung gesehen.

 

Wenn Nicht

Der Not-Operator wird verwendet, um FALSE nach TRUE oder TRUE nach FALSE zu konvertieren:

Sub Wenn_Nicht()
    MsgBox Not (True)
End Sub

if anweisung msgbox wenn nicht

Beachten Sie, dass der Not-Operator eine Klammer um den zu negierenden Ausdruck benötigt.

Der Not-Operator kann auch auf If-Anweisungen angewendet werden:

If Not (Range("A2").Value >= 5000 And Range("A2").Value <= 10000) Then
    Range("B2").Value = "Außerhalb des Bereichs"
End If

if anweisung wenn nicht

If-Vergleiche

Wenn Sie Vergleiche durchführen, werden Sie in der Regel einen der Vergleichsoperatoren verwenden:

Vergleichsoperator Erläuterung
=   Gleich
<>   Ungleich
>   Größer als
>=   Größer gleich
<   Kleiner als
<=   Kleiner gleich

Sie können aber auch jeden Ausdruck oder Funktion verwenden, die TRUE oder FALSE ergeben.

 

If – Boolesche Funktion

Wenn Sie Ausdrücke für If-Anweisungen bilden, können Sie auch jede Funktion verwenden, die TRUE oder False zurückgibt.  VBA verfügt über einige dieser Funktionen:

Funktion Beschreibung
IsDate   Gibt TRUE zurück, wenn der Ausdruck ein gültiges Datum ist
IsEmpty   Prüft auf leere Zellen oder undefinierte Variablen
IsError   Prüfung auf Fehlerwerte
IsNull   Prüfung auf NULL-Wert
IsNumeric   Prüfung auf numerischen Wert

Sie können wie folgt aufgerufen werden:

If IsEmpty(Range("A1").Value) Then MsgBox "Zelle leer"

Excel hat noch viele weitere Funktionen, die über WorksheetFunction aufgerufen werden können. Hier ist ein Beispiel für die Excel-Funktion IsText:

If Application.WorksheetFunction.IsText(Range("A2").Value) Then _
    MsgBox "Zelle enthält Text"

Sie können auch Ihre eigenen benutzerdefinierten Funktionen erstellen (User Defined Functions UDF). Im Folgenden werden wir eine einfache boolesche Funktion erstellen, die TRUE zurückgibt. Dann werden wir diese Funktion in unserer If-Anweisung aufrufen:

Sub Wenn_Funktion()

    If WahrheitsFunktion Then
        MsgBox "Wahr"
    End If

End Sub

Function WahrheitsFunktion() As Boolean
    WahrheitsFunktion = True
End Function

if anweisung wenn funktion

 

Text vergleichen

Ähnlich wie beim Vergleich von Zahlen können Sie auch Text vergleichen:

Msgbox "a" = "b"
Msgbox "a" = "a"

Wenn Sie Text vergleichen, müssen Sie auf die „Groß- oder Kleinschreibung“ achten. Standardmäßig betrachtet VBA Buchstaben mit unterschiedlicher Groß-/Kleinschreibung als nicht übereinstimmend.  Mit anderen Worten: „A“ <> „a“.

Wenn Sie möchten, dass VBA die Groß-/Kleinschreibung ignoriert, müssen Sie die Deklaration „Option Compare Text“ am Anfang Ihres Moduls hinzufügen:

Option Compare Text

Nach dieser Deklaration gilt „A“ = „a“:

Option Compare Text

Sub Wenn_Text()
    MsgBox "a" = "A"
End Sub

 

VBA If Like

Der VBA Like-Operator ermöglicht es Ihnen, ungenaue Vergleiche von Text durchzuführen. Folgen Sie auf dem Link „Like-Operator“, um mehr zu erfahren. Wir zeigen im Folgenden ein einfaches Beispiel:

Dim strName as String
strName = "Hr. Schmitt"

If strName Like "Hr*" Then
    MsgBox "Wahr"
Else
    MsgBox "Falsch"
End If

Hier verwenden wir einen Stern „*“ als Platzhalter. Der * steht für eine beliebige Anzahl von beliebigen Zeichen.  Die obige If-Anweisung wird also TRUE zurückgeben.  Der Like-Operator ist ein extrem mächtiges, aber oft zu wenig genutztes Werkzeug für den Umgang mit Text.

 

If-Schleifen

Mit VBA-Schleifen können Sie Aktionen wiederholen. Die Kombination von IF-ELSEs mit Schleifen ist eine großartige Möglichkeit, viele Berechnungen schnell zu verarbeiten.

 

In Fortsetzung unseres Positiv/Negativ-Beispiels fügen wir eine For Each-Schleife hinzu, um einen Zellenbereich zu durchlaufen:

Sub Wenn_Schleife()
Dim Cell as Range

    For Each Cell In Range("A2:A6")
      If Cell.Value > 0 Then
        Cell.Offset(0, 1).Value = "Positiv"
      ElseIf Cell.Value < 0 Then
        Cell.Offset(0, 1).Value = "Negativ"
      Else
        Cell.Offset(0, 1).Value= "Null"
      End If
    Next Cell

End Sub

if anweisung wenn schleife

 

If Else Beispiele

Jetzt werden wir einige spezifischere Beispiele durchgehen.

Prüfen, ob eine Zelle leer ist

Dieser Code prüft, ob eine Zelle leer ist. Wenn sie leer ist, wird die Zelle ignoriert. Wenn sie nicht leer ist, wird der Wert der Zelle gleich dem der Zelle rechts daneben gesetzt:

Sub Wenn_Zelle_Leer()

If Range("A2").Value <> "" Then
    Range("B2").Value = Range("A2").Value
End If

End Sub

if anweisung wenn zelle leer

Prüfen, ob eine Zelle einen bestimmten Text enthält

Die Instr-Funktion prüft, ob eine Textzeichenfolge innerhalb einer anderen Zeichenfolge enthalten ist. Verwenden Sie sie mit einer If-Anweisung, um zu prüfen, ob eine Zelle einen bestimmten Text enthält:

If Instr(Range("A2").value, "text") > 0 Then
  Msgbox "Text gefunden"
End If

 

Prüfen, ob Zelle Text enthält

Dieser Code prüft, ob eine Zelle eine Zeichenkette enthält:

Sub Wenn_Zelle_Ist_Text()

If Application.WorksheetFunction.IsText(Range("A2").Value) Then
    MsgBox "Zelle ist Text"
End If

End Sub

 

If Goto

Sie können das Ergebnis einer If-Anweisung verwenden, um zu einem angegebenen Abschnitt des Codes zu springen.

Sub IfGoTo ()

    If IsError(Cell.value) Then
        Goto Absprung
    End If

    'Irgendein Code

Absprung:
End Sub

 

Zeilen löschen wenn eine Zelle leer ist

Mit Ifs und Schleifen können Sie testen, ob eine Zelle leer ist und in dem Fall die gesamte Zeile löschen.

Sub ZeileLoeschenWennZelleLeer()

Dim Cell As Range

For Each Cell In Range("A2:A10")
    If Cell.Value = "" Then Cell.EntireRow.Delete
Next Cell

End Sub

 

If MessageBox Ja / Nein

Mit VBA MessageBoxen können Sie den Benutzer auffordern, aus mehreren Optionen auszuwählen. Die Ja/Nein Message Box fordert den Benutzer auf, Ja oder Nein zu wählen. Sie können eine Ja/Nein Message Box zu einer Prozedur hinzufügen, um den Benutzer zu fragen, ob er die Prozedur fortsetzen möchte oder nicht. Sie verarbeiten die Eingabe des Benutzers mit einer If-Anweisung.

Hier ist die Ja/Nein-Meldungsbox in der Praxis:

if ja nein message box

Sub MsgBoxVariable()

Dim antwort As Integer
antwort = MsgBox("Willst Du fortfahren?", vbQuestion + vbYesNo)

    If antwort = vbYes Then
      MsgBox "Ja"
    Else
      MsgBox "Nein"
    End If

End Sub

VBA If, ElseIf, Else in Access VBA

Die Anweisungen If, ElseIf und Else funktionieren in Access VBA genau so wie in Excel VBA.

Sie können eine If-Anweisung verwenden, um zu prüfen, ob ein Recordset-Objekt befüllt ist.

 

if anweisung access wenn datensaetze leer