TOP

VBA-Lektion 7.2. Bedingungen (Conditions)

Zusätzlich zur Prüfung mit den Bedingungen If...Then...Else und Select Case können wir auch die folgenden Prüfungen verwenden:

  • Vergleich von Datentypen (Funktionen IsNumeric, IsDate, IsEmpty, Operator Is Nothing)
  • Vergleich von Variablentypen (VarType-Funktion)
  • Text-Feeds vergleichen (Operator Like)

  • Überprüfung des Datentyps

    IsNumeric (die Funktion, die wir in der vorherigen Lektion verwendet haben) gibt TRUE (TRUE) zurück, wenn der Wert eine Zahl ist, und FALSE (FALSE), wenn – keine Zahl ist:

    If IsNumeric(Range("A1")) = True Then 'WENN WERT NUMMER IST...
    

    Der folgende Code erzeugt den gleichen Effekt wie der vorherige (wir müssen = True nicht einschließen, da das Konstrukt selbst eine Bedingungsprüfung ist):

    If IsNumeric(Range("A1")) = True Then 'WENN WERT NUMMER IST...
    

    Wenn wir prüfen möchten, ob ein Wert keine Zahl ist, können wir dies auf zwei Arten tun:

    If IsNumeric(Range("A1")) = False Then 'WENN DER WERT KEINE ZAHL IST ...
    
    If Not IsNumeric(Range("A1")) Then 'WENN DER WERT KEINE ZAHL IST ...
    

    Schauen wir uns noch ein paar weitere Funktionen an, die IsNumeric ähneln:

    If IsDate(Range("A1")) Then 'WENN DER WERT DATUM IST ...
    
    If IsEmpty(Range("A1")) Then 'WENN LEER...
    
    If var_object Is Nothing Then 'WENN OBJEKT NICHT DEFINIERT IST ...
    

    Überprüfen des Typs einer Variablen

    Um Befehle basierend auf dem Typ einer Variablen auszuführen, müssen wir die VarType-Funktion verwenden.

    Sobald wir das „=“-Zeichen eingeben, erscheint die Liste der Variablentypen:

    If VarType(my_variable) = vbInteger Then 'WENN my_variable der Variablentyp Integer ist ...
    

    Werte von Konstanten:

    Konstante Wert
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'WENN my_variable der Variablentyp Integer ist ...
     'Ist identisch mit:
     If VarType(my_variable) = 2 Then 'WENN my_variable der Variablentyp Integer ist ...
    

    Text-Feeds vergleichen (Like)

    Etwas früher haben wir den folgenden Codeausschnitt verwendet:

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> WAHR (TRUE)
    

    In diesem Fall sind die beiden Bänder gleich, aber wenn wir prüfen möchten, ob die Variable den Wert „12345“ enthält; Ohne andere Zeichen zu berücksichtigen, sollten wir den Befehl Like und den Operator * (Sternchen) vor und nach dem gesuchten Wert verwenden.

    Der Operator * (Sternchen) wird entschlüsselt als: beliebiges Zeichen oder Zeichensatz:

    my_variable = "Example 12345"
    
    If my_variable Like "*12345*" Then '=> WAHR (TRUE)
    

    Der Operator # (Hash) wird wie folgt dekodiert: jedes einzelne numerische Zeichen von 0 bis 9:

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> WAHR (TRUE)
    

    Operator? (Fragezeichen) wird entziffert als: jedes einzelne Zeichen:

    my_variable = "Example 12345"
    
    If my_variable Like "?xample?1234?" Then '=> WAHR (TRUE)
    

    Auf die gleiche Weise können wir auch bestimmte Zeichen oder eine Reihe von Zeichen verwenden:

    my_variable = "Example 12345"
    
    If my_variable Like "[DEF]xample 1234[4-7]" Then '=> WAHR (TRUE)
    

    Operator! (Ausrufezeichen) nach [ hinzugefügt bedeutet: jedes Zeichen, das nicht in eckigen Klammern eingeschlossen ist:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> WAHR (TRUE)
    
    In diesem Zusammenhang sind Großbuchstaben nicht mit denselben Kleinbuchstaben gleichzusetzen. Wenn Sie nicht zwischen Groß- und Kleinbuchstaben unterscheiden möchten, schreiben Sie einfach den Befehl Option Compare Text an den Anfang des Moduls.