vba data types numeric
Questo tutorial spiega vari tipi di dati numerici e non numerici disponibili in VBA. Impareremo anche le conversioni dei tipi di dati :
Ogni giorno ci imbattiamo in molti tipi di dati come nome, data, bollette, prezzo di una merce, ecc. Tutti questi dati appartengono a un certo tipo e il loro valore non può differire dal tipo ad esso associato. Allo stesso modo, VBA ha molti tipi di dati che vengono utilizzati per eseguire l'azione richiesta.
In questo tutorial, impareremo i diversi tipi di dati utilizzati in VBA e vedremo come questi ci aiuteranno nell'organizzazione del nostro programma. Analizzeremo anche la conversione di un tipo di dati in un altro tipo di dati.
=> Controlla TUTTI i tutorial VBA qui
Cosa imparerai:
- Categorie di tipi di dati
- Conclusione
Categorie di tipi di dati
Il tipo di dati indica al computer il tipo di dati che devono essere archiviati utilizzando una variabile. I tipi di dati sono suddivisi in 2 categorie, ovvero tipi di dati numerici e non numerici
Tipi di dati numerici
Questi tipi vengono utilizzati per eseguire operazioni matematiche come addizione, sottrazione, ecc. Esempio, calcolo percentuale, prezzo delle azioni, commissioni, bollette, età, ecc.
In VBA esistono 7 tipi di tipi di dati numerici come indicato di seguito.
Tipo di dati numerico | |
---|---|
7 | Decimale |
1 | Byte |
Due | Numero intero |
3 | Lungo |
4 | Single |
5 | Doppio |
6 | Moneta |
Diamo una breve occhiata a tutti i tipi di dati numerici.
# 1) Tipo di dati byte
Questo tipo di dati richiede solo un byte di memoria. Le variabili con tipo di dati Byte possono memorizzare valori da 0 a 255. Il valore di byte predefinito è 0. Valori negativi e valori maggiori di 255 non sono consentiti. Nel caso in cui si tenti di assegnare valori non validi, verrà restituito un errore di overflow.
Sintassi: Dim Vname As Byte
Qui Vname è un nome di variabile e Byte è il tipo di dati della variabile.
Esempio:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
L'output è fornito di seguito
# 2) Tipo di dati intero
Questi tipi di dati vengono utilizzati per memorizzare l'intero valore intero. Questo occupa 2 byte di memoria. Un numero intero è uno dei tipi di dati utilizzati di frequente. Accettano sia valori positivi, sia valori negativi e anche zero. Hanno un intervallo compreso tra -32.768 e 32.767.
Sintassi: Dim si accende come numero intero
Esempio:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
L'output è fornito di seguito
# 3) Tipo di dati lungo
Questa è un'alternativa a un tipo di dati intero che memorizza anche un valore intero intero. Tuttavia, occupa più memoria di una variabile intera che è di 4 byte. Ha un intervallo di valori compreso tra -2.147.483.648 e 2.147.483.648
Sintassi: Dim vname As Long
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Se esegui il codice sopra con una variabile intera, riceverai un errore di overflow perché ci sono 1048576 righe in Excel e il tipo di dati Integer supporta solo fino a 32.767. Come mostrato di seguito, quando il tipo di dati è lungo, viene mostrato un risultato appropriato.
Ma quando il tipo di dati è un numero intero, viene generato un errore di overflow.
# 4) Tipo di dati decimale
Questo è un tipo di dati numerico esatto utilizzato per la sua precisione. Questo è il numero totale di cifre e il numero di cifre a destra del punto decimale chiamato fattore di scala.
In VBA, i numeri vengono scalati con una potenza di 10. È appropriato utilizzare questi tipi durante la manipolazione di numeri grandi che richiedono un valore preciso. Questo occupa 14 byte in memoria.
miglior server wow per i nuovi giocatori 2017
Ma le variabili non possono essere dichiarate direttamente come tipo di dati decimale. Per utilizzare Decimal, è necessario utilizzare la funzione di conversione CDec. È necessario utilizzare un tipo di dati Variant.
Questo tipo di dati contiene il seguente intervallo di valori.
+/- 79.228.162.514.264.337.593.543.950.335 senza punto decimale
+/- 7,9228162514264337593543950335 con 28 cifre decimali a destra del decimale.
Il valore più piccolo diverso da zero accettato è +/- 0,0000000000000000000000000001.
Sintassi: Dim si accende come variante
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Nota: La funzione TypeName darà il nome del tipo di dati
Produzione:
# 5) Tipo di dati singolo
Questo tipo di dati viene utilizzato per memorizzare i numeri con virgola mobile a precisione singola. Occupa 4 byte di memoria. Il valore predefinito è 0 e memorizza i valori decimali. È possibile utilizzare il punto esclamativo (!) Durante la dichiarazione di una variabile come mostrato nella sintassi seguente.
L'intervallo di valori accettato è:
Da 3.402823E38 a -1.401298E-45 per valori negativi
Da 1.401298E-45 a 3.402823E38 per valori positivi.
Sintassi
Dim VariableName come Single
o
Dim VariableName!
Sub SingleDataTypeTest() Dim SingleVal1 As Single Dim SingleVal2! SingleVal1 = 123 SingleVal2 = 333.44 MsgBox ('Data type of SingleVal1 is ' & TypeName(SingleVal1) & ' with value ' & SingleVal1 & ' and datatype of SingleVal2 is ' & TypeName(SingleVal2) & ' with value ' & SingleVal2) End Sub
# 6) Doppio tipo di dati
I dati Double VBA possono essere utilizzati per contenere sia numeri interi che frazioni. Double viene utilizzato per memorizzare numeri con virgola mobile a precisione doppia. Occupa 8 byte di memoria e ha un intervallo di valori.
-1,79769313486231E308 a -4,94065645841247E-324 per valori negativi
Da 4.94065645841247E-324 a 1.79769313486232E308 per valori positivi
Come il tipo di dati Single, anche double può essere dichiarato utilizzando un simbolo che è Hash (#) come mostrato di seguito.
Sintassi
Dim VariableName come Double
o
Dim VariableName #
Sub DoubleDataTypeTest() Dim douValue As Double Dim douVal1# douValue = 100.21 douVal1 = 333.44 MsgBox ('Data type of douValue is ' & TypeName(douValue) & ' with value ' & douValue & ' and datatype of douVal1 is ' & TypeName(douVal1) & ' with value ' & douVal1) End Sub
# 7) Tipo di dati valuta
Questo tipo di dati può richiedere fino a 8 byte di dimensioni di archiviazione. Questo tipo di dati fornisce un valore esatto, a differenza dei tipi di dati singoli e doppi che abbiamo già discusso sono arrotondati. Questi sono utili per i calcoli monetari.
Il tipo di dati valuta può memorizzare valori sia positivi che negativi. Questi possono memorizzare 15 cifre a sinistra del decimale e 4 cifre a destra.
L'intervallo consentito è compreso tra -922.337.203.685.477.5808 e 922.337.203.685.477.5807. È possibile utilizzare @ per dichiarare i tipi di dati Currency.
Sintassi
Dim VariableName come valuta
o
Dim VariableName @
Sub CurrencyDataTypeTest() Dim val1 As Currency Dim Val2@ val1 = 123 Val2 = 333.44 MsgBox ('Data type of Val1 is ' & TypeName(val1) &” with value “ &val1 & ' and datatype of Val2 is ' & TypeName(Val2) & “ with value “ &val2) End Sub
Produzione:
Nota :Se il valore della variabile supera l'intervallo fornito per un particolare tipo di dati, verrà generato un errore di overflow.
Considera il semplice esempio del tipo di dati byte che supera il suo intervallo. Lo stesso errore verrà visualizzato se si immettono valori negativi per il tipo di dati byte.
Tipi di dati non numerici
Questi sono dati che non possono essere manipolati da operatori aritmetici. Comprendono testo, stringa, data e così via. Di seguito sono riportati i tipi di dati non numerici supportati in VBA.
Tipo di dati non numerico | |
---|---|
7 | Variante (caratteri) |
1 | Stringa (lunghezza fissa) |
Due | Stringa (lunghezza variabile) |
3 | Data |
4 | Booleano |
5 | Oggetto |
6 | Variante (numeri) |
# 1) Tipo di dati booleano
Questo tipo di dati richiede 2 byte di memoria e può memorizzare solo 2 valori, ovvero VERO o FALSO. In altre parole, la variabile booleana può ottenere solo il valore TRUE o FALSE, in alternativa rispettivamente 1 o 0. Il valore predefinito di una variabile booleana è False.
Sintassi - Dim Vname As Boolean
Esempio:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Tipo di dati data
Questo tipo di dati viene utilizzato per rappresentare la data e l'ora. Ha valori di intervallo di date dal 1 gennaio 0100 al 31 dicembre 9999 e valori di ora da 0:00:00 a 23:59:59 e occupa 8 byte di dimensione di archiviazione.
Sintassi: Dim si accende come data
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Nota: La funzione Now fornisce la data e l'ora correnti
# 3) Tipo di dati stringa
Questo tipo di dati viene utilizzato per memorizzare il valore della stringa. La stringa è definita come una sequenza di caratteri. Quindi è possibile utilizzare il tipo di dati String per memorizzare il testo e può essere utilizzato per memorizzare numeri, caratteri speciali, s e spazi eventi. Un valore stringa deve essere racchiuso tra virgolette doppie ''.
Esistono 2 tipi di tipo di dati String.
# 1) Stringa di lunghezza variabile: Questo tipo occupa 10 byte di dimensione di archiviazione più la memoria richiesta per la stringa che è la lunghezza della stringa. Hanno un valore compreso tra 0 e circa 2 miliardi.
# 2) Stringa di lunghezza fissa: Occupa la memoria pari alla lunghezza della stringa stessa. Può variare da 1 a circa 65.400 caratteri
Sintassi: Dim Vname As String
Esempio:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Tipo di dati oggetto
L'oggetto avrà un riferimento a un oggetto di qualsiasi tipo, ad esempio il tipo di dati dell'oggetto può puntare a qualsiasi tipo di dati come stringa, double, integer, ecc. immagazzinato. Occupa 4 byte di memoria del computer. Il valore predefinito di un oggetto è un riferimento nullo.
Sintassi: Dim VName As Object
Esempio:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Questo cancellerà tutte le celle usate nel foglio corrente.
# 5) Tipo di dati variante
Questo è il tipo di dati universale di VBA, può accettare qualsiasi tipo di dati numerici e non numerici. Il tipo di dati Variant offre maggiore flessibilità durante il lavoro con i dati. Il tipo di dati Variant utilizza più dimensioni di archiviazione rispetto a qualsiasi altro tipo di dati. Se non menzioni un tipo di dati, VBA lo tratterà come una variabile Variant.
Esistono 2 tipi di tipi di dati Variant
# 1) Variante (numeri): Può contenere qualsiasi valore numerico fino all'intervallo di Double. I numeri Variant occupano 16 byte di dimensioni di archiviazione.
# 2) Variante (caratteri): Può contenere lo stesso intervallo della stringa di lunghezza variabile. I caratteri Variant occupano 22 byte + lunghezza della stringa (24 byte su sistemi a 64 bit)
Sintassi
Dim VName As Variant
o
Dim VName
Esempio:
Sub VariantDataTypeTest() Dim EmpName As Variant Dim DOB Dim Salary As Variant EmpName = 'Jofn kim' DOB = #10/3/2020# Salary = 55000 MsgBox EmpName & ' ' & DOB & ' ' & Salary End Sub
Conversione del tipo di dati
A volte diventa necessario convertire il tipo di dati di una variabile in qualcosa di specifico nel nostro caso d'uso.
Esempio: Si recupera un valore da una cella, che di solito è una stringa, e quindi è necessario convertirlo in un tipo di dati numerico prima di eseguire qualsiasi operazione aritmetica. Per ottenere ciò, VBA dispone di funzioni di conversione del tipo per tutti i tipi di dati supportati.
# 1) CBool
Questa funzione viene utilizzata per convertire un'espressione in un tipo di dati booleano. Se l'espressione restituisce zero, CBool restituirà False, qualsiasi valore diverso da zero, CBool restituirà True.
Sub CBooleanTest() Dim val1 As Integer Dim strval2 As String val1 = 0 MsgBox CBool(val1) val1 = 177 MsgBox CBool(val1) strval2 = 'A' MsgBox CBool(strval2 = 'B') MsgBox CBool(strval2 'B') End Sub
Il codice precedente restituirà risultati come False, True, False, True.
Puoi provare tu stesso, disegnare un pulsante di comando del controllo ActiveX, fare clic con il pulsante destro del mouse -> Visualizza codice e inserire il codice sopra. Fare clic sul pulsante di comando e verrà visualizzato il risultato. (Disabilita la modalità di progettazione)
Produzione
# 2) CByte
Questa funzione viene utilizzata per convertire un'espressione in un tipo di dati Byte. Ricorda che dopo la conversione se l'intervallo supera l'intervallo consentito per Byte, verrà generato un errore di overflow.
Sub cbyteTest() Dim val1 As Double Dim val2 val1 = 125.5678 val2 = CByte(val1) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
Nota: Se dai il valore 255,56. Complier restituirà un errore di overflow
# 3) CCur
Questa funzione convertirà un'espressione in un tipo di dati Currency.
Sub ccurTest() Dim val1 As Integer Dim val2 val1 = 5544 val2 = CCur(val1 / 5) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
# 4) CDate
Questa funzione convertirà una stringa in una data. Supponiamo di recuperare il valore Data come stringa da una cella Excel, quindi è necessario convertirlo prima di eseguire ulteriori azioni. Puoi usare CDate.
Sub CDateTest() Dim val1, val2, val3 As String Dim Res1, Res2, Res3 val1 = '12:21' val2 = '23/09 12:12' val3 = 'Sep 23, 2020' Res1 = CDate(val1) Res2 = CDate(val2) Res3 = CDate(val3) MsgBox 'Date of val1 is : ' & Res1 & ' Date of val2 is : ' & Res2 & ' Date of val3 is ' & Res3 End Sub
# 5) CDbl
La funzione CDbl viene utilizzata per convertire un'espressione in un tipo di dati Double.
Sub CDblTest() Dim val1 As String Dim val2 As Integer Dim Res1 val1 = 10000.12345 val2 = 1222.222 Res1 = CDbl(val1) Res2 = CDbl(val2) MsgBox 'Double value after converting String : ' & Res1 & ' Double value after converting Integer : ' & Res2 End Sub
# 6) CDec
Questa funzione convertirà un valore numerico in Decimale.
Sub CDecTest() Dim Val1 As Currency Dim Result Val1 = 1234566.56366 Result = CDec(Val1) ‘Result is 1234566.5637 MsgBox 'Decimal Data Type Value : ' & Result End Sub
# 7) CInt
La funzione CInt convertirà un valore in un tipo di dati intero.
Sub CintTest() Dim Val1 As Double Dim Result Val1 = 2345.5678 Result = CInt(Val1) 'Result is 2346 MsgBox 'Integer value of converting is : ' & Result & ' and datatype of Result is ' & TypeName(Result) End Sub
# 8) CLng
Questa funzione viene utilizzata per convertire un valore in un tipo di dati lungo
Sub cLngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 45457.35 Val2 = 45457.65 Res1 = CLng(Val1) Res2 = CLng(Val2) MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 9) CSng
Questa funzione convertirà un valore in un singolo tipo di dati
Sub cSngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 75.3421115 Val2 = 75.3421555 Res1 = CSng(Val1) ' Result is 75.34211. Res2 = CSng(Val2) ' Result is 75.34216. MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 10) CStr
Questa funzione viene utilizzata per convertire un valore numerico in un tipo di dati stringa.
Sub CStrTest() Dim Val1 As Double Dim Result Val1 = 123.123 Result = CStr(Val1) 'Result will be 123.123 MsgBox 'Result of Val1 is ' & Val1 End Sub
# 11) CVar
Questa funzione convertirà un'espressione in un tipo di dati Variant.
Sub CVarTest() Dim Val1 As Integer Dim Result Val1 = 1234 Result = CVar(Val1 & 1.12) ' Result will be 12341.12 MsgBox 'Result is ' & Result End Sub
Domande frequenti
D # 1) Qual è il tipo di dati predefinito in VBA?
Risposta: La variante è quella predefinita. Se non si definisce un tipo di dati di una variabile, VBA lo tratta come una variabile / oggetto variante.
D # 2) Che cos'è un errore di mancata corrispondenza del tipo?
Risposta: Questo errore verrà attivato quando si dichiara una variabile come un tipo di dati e si assegna un valore inappropriato.
Esempio: Dichiara una variabile come Integer e inserisci un valore di testo.
come aprire il file .dat su mac
D # 3) Come posso correggere un errore di overflow?
Risposta: È necessario fare riferimento all'intervallo consentito per quel particolare tipo di dati e assicurarsi di immettere un valore all'interno dell'intervallo consentito.
Esempio: Byte consente solo da 0 a 255, se si immette un valore negativo o un valore v maggiore di 255, si verifica un errore di overflow.
Conclusione
In questo tutorial, abbiamo imparato a conoscere i tipi di dati VBA, ovvero 7 tipi di dati numerici e 7 non numerici. Abbiamo anche discusso come convertire un tipo di dati da un tipo a un altro con esempi.
=> Controlla qui per vedere i tutorial di formazione VBA dalla A alla Z.
Lettura consigliata
- Esercitazione su VBA di Excel - Introduzione a VBA in Excel
- Tipi di dati C ++
- Tipi di dati Python
- Tipi di dati e variabili C # con esempi
- Casting di tipo C #: conversione di dati esplicita e implicita con esempio
- Tipi di dati array: int Array, Double array, Array of Strings Etc.
- Tipi di dati MySQL | Quali sono i diversi tipi di dati in MySQL