TOP

VBA-Lezione 7.2. Condizioni (Condizioni)

Oltre a controllare le condizioni If...Then...Else e Select Case, possiamo anche utilizzare i seguenti controlli:

  • confronto tra tipi di dati (funzioni IsNumeric, IsDate, IsEmpty, operatore Is Nothing)
  • confronto di tipi di variabili (funzione VarType)
  • confronto dei feed di testo (operatore Like)

  • Controllo del tipo di dati

    IsNumeric (la funzione che abbiamo utilizzato nella lezione precedente) restituisce TRUE (TRUE) se il valore è un numero e FALSE (FALSE) se - non è un numero:

    If IsNumeric(Range("A1")) = True Then 'SE IL VALORE È UN NUMERO...
    

    Il codice seguente produce lo stesso effetto del precedente (non è necessario includere = True perché il costrutto stesso è un controllo delle condizioni):

    If IsNumeric(Range("A1")) = True Then 'SE IL VALORE È UN NUMERO...
    

    Se vogliamo verificare se un valore non è un numero, possiamo farlo in due modi:

    If IsNumeric(Range("A1")) = False Then 'SE IL VALORE NON È UN NUMERO...
    
    If Not IsNumeric(Range("A1")) Then 'SE IL VALORE NON È UN NUMERO...
    

    Diamo un'occhiata ad alcune altre funzioni simili a IsNumeric:

    If IsDate(Range("A1")) Then 'SE IL VALORE È LA DATA...
    
    If IsEmpty(Range("A1")) Then 'SE VUOTO...
    
    If var_object Is Nothing Then 'SE L'OGGETTO NON È DEFINITO...
    

    Verifica del tipo di una variabile

    Per eseguire comandi in base al tipo di una variabile, dovremo utilizzare la funzione VarType.

    L'elenco dei tipi di variabili apparirà non appena inseriremo il segno "=":

    If VarType(my_variable) = vbInteger Then 'SE my_variable è il tipo di variabile Integer ...
    

    Valori delle costanti:

    Costante Valore
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'SE my_variable è il tipo di variabile Integer ...
     'È identico a:
     If VarType(my_variable) = 2 Then 'SE my_variable è il tipo di variabile Integer ...
    

    Confronta feed di testo (Like)

    Poco prima abbiamo utilizzato il seguente frammento di codice:

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

    In questo caso i due nastri sono uguali, ma se vogliamo verificare se la variabile contiene il valore "12345"; senza considerare gli altri caratteri, allora dovremmo usare il comando Like e l'operatore * (asterisco) prima e dopo il valore che stiamo cercando.

    L'operatore * (asterisco) viene decifrato come: qualsiasi carattere o insieme di caratteri:

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

    L'operatore # (hash) viene decodificato come: qualsiasi singolo carattere numerico da 0 a 9:

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

    Operatore? (punto interrogativo) viene decifrato come: qualsiasi singolo carattere:

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

    Possiamo anche utilizzare caratteri specifici o un insieme di caratteri allo stesso modo:

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

    Operatore! (punto esclamativo) aggiunto dopo [ significherà: qualsiasi carattere non racchiuso tra parentesi quadre:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> VERO (TRUE)
    
    In questo contesto, i caratteri maiuscoli non equivalgono agli stessi caratteri minuscoli. Se non vuoi distinguere tra caratteri maiuscoli e minuscoli, scrivi semplicemente il comando Option Confronta testo all'inizio del modulo.