Tipo variabile lungo
Il VBA Lungo il tipo di dati viene utilizzato per memorizzare valori di dati molto lunghi (da -2.147.483.648 a 2.147.483.648). Può memorizzare solo numeri interi (senza cifre decimali).
Per dichiarare una variabile Long, usi l'istruzione Dim (abbreviazione di Dimension):
1 | Dim lngA come Long |
Quindi, per assegnare un valore a una variabile, utilizzare semplicemente il segno di uguale:
1 | lngA = 30000 |
Inserendo questo in una procedura si presenta così:
12345678 | Sub lngEsempio()'dichiarare la variabile lungaDim lngA come Long'popola la variabile lungalngA = 30000'mostra la finestra del messaggioMsgBox lngAFine sottotitolo |
Se esegui il codice sopra, verrà mostrata la seguente finestra di messaggio.
Tipo di dati LongLong
Il tipo di dati LongLong è disponibile solo nella versione a 64 bit di Microsoft Office. Se si esegue una versione di Office a 32 bit su un computer a 64 bit, questo tipo di dati non sarà disponibile. Supporta numeri nell'intervallo da -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807.
1 | Dim lngA come LongLong |
Tipo di dati LongPtr
Il LongPtr è stato introdotto in VBA per supportare la versione a 64 bit di Microsoft Office. Su un sistema a 32 bit, viene trattato come Long e su sistemi a 64 bit viene trattato come LongLong.
1 | Dim lngA come LongPtr |
Nota: LongPtr non è disponibile in Excel 2007 o versioni precedenti.
Valori decimali e tipi di dati lunghi
Le variabili lunghe non possono memorizzare valori decimali. Se si passa un numero decimale lungo, il numero decimale verrà arrotondato per rimuovere il decimale.
Pertanto, se dovessi eseguire la procedura seguente:
12345678 | Sub LngEsempioB()'dichiarare la variabile lungaDim lngA come Long'popola la variabile lungalngA = 3524,12'mostra la finestra del messaggioMsgBox lngAFine sottotitolo |
Il valore decimale verrebbe arrotondato per difetto, restituendo il seguente messaggio:
Tuttavia, questo codice di seguito:
12345678 | Sub LngEsempioB()'dichiarare la variabile lungaDim lngA come Long'popola la variabile lungalngA = 3524,12'mostra la finestra del messaggioMsgBox lngAFine sottotitolo |
Restituirebbe la seguente finestra di messaggio (arrotondando per eccesso):
Tipo di dati decimale/doppio
Se si desidera memorizzare una posizione decimale, è necessario dichiarare una variabile che consenta le posizioni decimali. Ci sono 3 tipi di dati che puoi usare: Singolo, Doppio o Valuta.
1 | Dim sngPrezzo come singolo |
1 | Dim dblPrice as Double |
1 | Dim curPrezzo come valuta |
Il tipo di dati Single arrotonderà la virgola in modo leggermente diverso rispetto al tipo di dati double e currency, quindi è preferibile utilizzare double a single per la precisione. Un Double può avere fino a 12 decimali mentre Currency e Single possono avere entrambi fino a 4 decimali.
Dichiara variabile lunga a livello di modulo o globale
Negli esempi precedenti, abbiamo dichiarato la variabile Long all'interno di una procedura. Le variabili dichiarate con una procedura possono essere utilizzate solo all'interno di tale procedura.
Invece, puoi dichiarare variabili Long a livello di modulo o globale.
Livello modulo
Livello modulo le variabili sono dichiarate all'inizio dei moduli di codice con il fioco dichiarazione.
Queste variabili possono essere utilizzate con qualsiasi procedura in quel modulo di codice.
Livello globale
Livello globale le variabili sono anche dichiarate nella parte superiore dei moduli di codice. Tuttavia, invece di usare il fioco affermazione, usa il Pubblico istruzione per indicare che la variabile long è disponibile per essere utilizzata in tutto il progetto VBA.
1 | LNGA pubblico come Long |
Se dovessi dichiarare la variabile long a livello di modulo e poi provare a usarla in un modulo diverso, si verificherebbe un errore.
Tuttavia, se avessi usato la parola chiave Public per dichiarare la variabile long, l'errore non si sarebbe verificato e la procedura sarebbe stata eseguita perfettamente.
Formato a lungo archiviato come stringa
Potrebbe esserci un momento in cui desideri formattare un tipo di dati lungo in una stringa, ad esempio una data o potresti voler visualizzare un simbolo di valuta.
Per ottenere ciò, si utilizza la funzione Format.
La seguente procedura:
1234567891011 | Sub TestLongToString()'dichiarare la variabile stringaDim strDate come stringa'dichiarare il lungo e popolare il valoreDim lngDate as longlngDate = 44055'converti il long in una stringa formattata come datastrDate = Format(lngDate, "gg mmmm aaaa")'visualizza il risultatoDebug.Print strDateFine sottotitolo |
restituirebbe il risultato seguente:
e la seguente procedura
1234567891011 | Sub TestLongtoCurrencyString()'dichiarare la variabile stringaDim strMoney As String'dichiarare il lungo e popolare il valoreDim lngValue As LonglngValue = 44055'converti il long in una stringa con un simbolo di valutastrMoney = Format(lngValue, "$#,##0")'visualizza il risultatoMsgBox strMoneyFine sottotitolo |
restituirebbe questo risultato: