Potrebbe essere necessario convertire i numeri memorizzati come testo in numeri effettivi nel codice VBA. In questo tutorial, esamineremo le funzioni che è necessario utilizzare per convertire una stringa in un tipo di dati intero, lungo, doppio, decimale o valuta (fare clic qui per informazioni sulla conversione di numeri in stringhe)
Converti stringa in intero
È possibile utilizzare la funzione CInt o CLng per convertire una stringa in un numero intero. Se la frazione è minore di 0,5 la funzione verrà arrotondata per difetto, se la frazione è maggiore o uguale a 0,5 la funzione verrà arrotondata per eccesso. Il codice seguente convertirà una stringa in un numero intero:
1 | MsgBox CInt("7.55") |
Il risultato è:
Il codice seguente utilizza la funzione CLng per convertire una stringa in un numero intero:
1 | MsgBox CLng("13.5") |
Il risultato è:
Nota: È possibile utilizzare la funzione CInt o CLng per convertire una stringa in un tipo di dati intero o lungo (rispettivamente). Il tipo di dati Long è lo stesso di un tipo di dati intero, tranne per il fatto che sono consentiti numeri più grandi. In passato, la distinzione era richiesta a causa di vincoli di memoria. Nella programmazione moderna, non c'è motivo per non utilizzare il tipo di dati lungo poiché la memoria non è più un problema. Quindi è sempre meglio usare un tipo di dati lungo invece di un numero intero.
È possibile utilizzare la finestra immediata per vedere come verrebbe elaborato il valore se non convertito in un numero intero:
1 | Debug.Stampa "13,5" + "13,5" |
Di solito, il testo verrà memorizzato come variabile e questa variabile dovrà essere convertita in un tipo di dati numerico come mostrato nel codice seguente:
1234567 | Sub Using_Variables()Dim valueOne As StringvaloreUno = 5MsgBox CLng(valoreUno) + CLng(valoreUno)Fine sottotitolo |
Converti stringa in decimale
È possibile utilizzare la funzione CDbl o CDec per convertire una stringa in un decimale. Il codice seguente convertirà una stringa in un doppio tipo di dati:
1 | MsgBox CDbl("9.1819") |
Il risultato è:
Il codice seguente converte una stringa in un tipo di dati decimale:
1 | MsgBox CDec("13.57") + CDec("13.4") |
Il risultato è:
È possibile utilizzare la finestra immediata per vedere come verrebbe elaborato il valore se non convertito in un tipo di dati double o decimal:
1 | Debug.Stampa "13.57" + "13.4" |
Il risultato è:
Nota: Il tipo di dati decimal può memorizzare numeri più grandi rispetto al tipo di dati double, quindi è sempre consigliabile utilizzare il tipo di dati decimal quando non si è sicuri.
Converti stringa in valuta
Puoi utilizzare la funzione CCur per convertire una stringa in una valuta. Il codice seguente converte una stringa in un tipo di dati di valuta:
1 | Intervallo("A1").Valore = CCur("18.5") |
Il risultato è: