TOP

VBA-Lekcja 7.2. Warunki (Warunki)

YouLibreCalc for Excel logo

Oprócz sprawdzenia warunków If...Then...Else i Select Case możemy także skorzystać z następujących kontroli:

  • porównanie typów danych (funkcje IsNumeric, IsDate, IsEmpty, operator Is Nothing)
  • porównanie typów zmiennych (funkcja VarType)
  • porównywanie kanałów tekstowych (operator Like)

  • Sprawdzanie typu danych

    IsNumeric (funkcja, której używaliśmy w poprzedniej lekcji) zwraca PRAWDĘ (TRUE), jeśli wartość jest liczbą, i FAŁSZ (FALSE), jeśli - nie jest liczbą:

    If IsNumeric(Range("A1")) = True Then 'JEŚLI WARTOŚĆ JEST LICZBĄ...
    

    Poniższy kod daje taki sam efekt jak poprzedni (nie musimy dołączać = True, ponieważ sama konstrukcja jest sprawdzaniem warunku):

    If IsNumeric(Range("A1")) = True Then 'JEŚLI WARTOŚĆ JEST LICZBĄ...
    

    Jeżeli chcemy sprawdzić czy dana wartość nie jest liczbą, możemy to zrobić na dwa sposoby:

    If IsNumeric(Range("A1")) = False Then 'JEŚLI WARTOŚĆ NIE JEST LICZBĄ...
    
    If Not IsNumeric(Range("A1")) Then 'JEŚLI WARTOŚĆ NIE JEST LICZBĄ...
    

    Przyjrzyjmy się kilku innym funkcjom podobnym do IsNumeric:

    If IsDate(Range("A1")) Then 'JEŚLI WARTOŚĆ JEST DATĄ...
    
    If IsEmpty(Range("A1")) Then 'JEŚLI PUSTY...
    
    If var_object Is Nothing Then 'JEŚLI PRZEDMIOT NIE JEST ZDEFINIOWANY...
    

    Sprawdzanie typu zmiennej

    Aby wykonać polecenia w oparciu o typ zmiennej, będziemy musieli skorzystać z funkcji VarType.

    Lista typów zmiennych pojawi się po wpisaniu znaku „=”:

    If VarType(my_variable) = vbInteger Then 'JEŚLI my_variable jest zmienną typu Integer ...
    

    Wartości stałych:

    Stały Wartość
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'JEŚLI my_variable jest zmienną typu Integer ...
     'Jest identyczny z:
     If VarType(my_variable) = 2 Then 'JEŚLI my_variable jest zmienną typu Integer ...
    

    Porównaj kanały tekstowe (Like)

    Nieco wcześniej użyliśmy następującego fragmentu kodu:

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

    W tym przypadku obie taśmy są takie same, ale jeśli chcemy sprawdzić, czy zmienna zawiera wartość „12345”; nie biorąc pod uwagę innych znaków, wówczas powinniśmy użyć polecenia Like, a operatora * (gwiazdka) przed i po wartości, której szukamy.

    Operator * (gwiazdka) jest odszyfrowywany jako: dowolny znak lub zestaw znaków:

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

    Operator # (hash) jest dekodowany jako: dowolny pojedynczy znak numeryczny od 0 do 9:

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

    Operator? (znak zapytania) jest odczytywany jako: dowolny pojedynczy znak:

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

    W ten sam sposób możemy również użyć określonych znaków lub zestawu znaków:

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

    Operator! (wykrzyknik) dodany po [ będzie oznaczać: dowolny znak nieujęty w nawiasy kwadratowe:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> PRAWDA (TRUE)
    
    W tym kontekście wielkie litery nie są równoznaczne z tymi samymi małymi literami. Jeżeli nie chcesz rozróżniać wielkich i małych liter, po prostu napisz na początku modułu polecenie Option Compare Text.