TOP

VBA-Lecția 7.2. Condiții (Condiții)

YouLibreCalc for Excel logo

Pe lângă verificarea condițiilor If...Then...Else și Select Case, putem folosi și următoarele verificări:

  • compararea tipurilor de date (funcțiile IsNumeric, IsDate, IsEmpty, operator Is Nothing)
  • compararea tipurilor de variabile (funcția VarType)
  • compararea fluxurilor de text (operatorul Like)

  • Verificarea tipului de date

    IsNumeric (funcția pe care am folosit-o în lecția anterioară) returnează TRUE (TRUE) dacă valoarea este un număr și FALSE (FALSE) dacă - nu este un număr:

    If IsNumeric(Range("A1")) = True Then 'DACĂ VALOAREA ESTE NUMĂR...
    

    Următorul cod produce același efect ca și cel anterior (nu trebuie să includem = True deoarece constructul în sine este o verificare a condiției):

    If IsNumeric(Range("A1")) = True Then 'DACĂ VALOAREA ESTE NUMĂR...
    

    Dacă vrem să verificăm dacă o valoare nu este un număr, o putem face în două moduri:

    If IsNumeric(Range("A1")) = False Then 'DACĂ VALOAREA NU ESTE UN NUMĂR...
    
    If Not IsNumeric(Range("A1")) Then 'DACĂ VALOAREA NU ESTE UN NUMĂR...
    

    Să ne uităm la câteva funcții similare cu IsNumeric:

    If IsDate(Range("A1")) Then 'DACĂ VALOAREA ESTE DATA...
    
    If IsEmpty(Range("A1")) Then 'DACĂ GOL...
    
    If var_object Is Nothing Then 'DACĂ OBIECTUL NU ESTE DEFINIT...
    

    Verificarea tipului unei variabile

    Pentru a executa comenzi bazate pe tipul unei variabile, va trebui să folosim funcția VarType.

    Lista de tipuri de variabile va apărea imediat ce introducem semnul „=":

    If VarType(my_variable) = vbInteger Then 'DACĂ my_variable este de tip variabilă Integer...
    

    Valorile constantelor:

    Constant Valoare
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'DACĂ my_variable este de tip variabilă Integer...
     'Este identic cu:
     If VarType(my_variable) = 2 Then 'DACĂ my_variable este de tip variabilă Integer...
    

    Comparați fluxuri de text (Like)

    Puțin mai devreme am folosit următorul fragment de cod:

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> ADEVĂRAT (TRUE)
    

    În acest caz cele două benzi sunt la fel, dar dacă vrem să verificăm dacă variabila conține valoarea „12345”; fără a lua în considerare alte caractere, atunci ar trebui să folosim comanda Like și operatorul * (asterisc) înainte și după valoarea pe care o căutăm.

    Operatorul * (asterisc) este descifrat ca: orice caracter sau set de caractere:

    my_variable = "Example 12345"
    
    If my_variable Like "*12345*" Then '=> ADEVĂRAT (TRUE)
    

    Operatorul # (hash) este decodat ca: orice caracter numeric de la 0 la 9:

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> ADEVĂRAT (TRUE)
    

    Operator? (semnul de întrebare) este descifrat ca: orice caracter:

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

    De asemenea, putem folosi anumite caractere sau un set de caractere în același mod:

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

    Operator! (punct de exclamare) adăugat după [ va însemna: orice caracter care nu este cuprins între paranteze pătrate:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> ADEVĂRAT (TRUE)
    
    În acest context, caracterele majuscule nu sunt echivalente cu aceleași caractere minuscule. Dacă nu doriți să faceți distincția între caracterele majuscule și minuscule, atunci scrieți comanda Option Compare Text la începutul modulului.