vba data types numeric
Aquest tutorial explica diversos tipus de dades numèriques i no numèriques disponibles a VBA. També coneixerem les conversions de tipus de dades :
Cada dia ens trobem amb molts tipus de dades, com ara el nom, la data, les factures, el preu d’una mercaderia, etc. Totes aquestes dades pertanyen a un tipus determinat i els seus valors no es poden diferir del tipus que s’hi adjunta. De la mateixa manera, VBA té molts tipus de dades que s’utilitzen per realitzar l’acció necessària.
En aquest tutorial, aprendrem els diferents tipus de dades que s’utilitzen a VBA i veurem com aquests ajudaran a organitzar el nostre programa. També analitzarem la possibilitat de convertir un tipus de dades a un altre.
=> Consulteu aquí TOTS els tutorials de VBA
Què aprendreu:
- Categories de tipus de dades
- Conclusió
Categories de tipus de dades
El tipus de dades indica a l’ordinador el tipus de dades que cal emmagatzemar mitjançant una variable. Els tipus de dades es divideixen en 2 categories, és a dir, tipus de dades numèriques i no numèriques
Tipus de dades numèriques
Aquests tipus s’utilitzen per realitzar operacions matemàtiques com la suma, la resta, etc. Exemple, càlcul percentual, preu de les accions, comissions, factures, edat, etc.
A VBA hi ha 7 tipus de tipus de dades numèriques, tal com s’esmenta a continuació.
Tipus de dades numèriques | |
---|---|
7 | Decimal |
1 | Byte |
2 | Enter |
3 | Llarg |
4 | Solter |
5 | Doble |
6 | Moneda |
Vegem breument tots els tipus de dades numèriques.
# 1) Tipus de dades de bytes
Aquest tipus de dades requereix només un byte de memòria. Les variables amb tipus de dades Byte poden emmagatzemar valors de 0 a 255. El valor de byte per defecte és 0. No es permeten valors negatius ni valors superiors a 255. En cas que intenteu assignar valors no vàlids, es retornarà un error de desbordament.
Sintaxi: dim Vname com a byte
Aquí Vname és un nom de variable i Byte és el tipus de dades de la variable.
Exemple:
com obrir un .torrent
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
La sortida es dóna a continuació
# 2) Tipus de dades enter
Aquests tipus de dades s’utilitzen per emmagatzemar tot el valor enter. Ocupa 2 bytes de memòria. Un enter és un dels tipus de dades que s’utilitzen amb més freqüència. També accepten valors positius, negatius i zero. Tenen un rang d'entre -32.768 i 32.767.
Sintaxi: Dim s'encén com a enter
Exemple:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
La sortida es dóna a continuació
# 3) Tipus de dades llarg
Aquesta és una alternativa a un tipus de dades enter que també emmagatzema tot un valor enter. Tot i això, ocupa més memòria que una variable sencera de 4 bytes. Té un rang de valors des de -2.147.483.648 fins a 2.147.483.648
Sintaxi: 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
Si executeu el codi anterior amb una variable sencera, obtindreu un error de desbordament perquè hi ha 1048576 files a Excel i el tipus de dades enter només admet fins a 32.767. Com es mostra a continuació quan el tipus de dades és llarg, es mostra un resultat adequat.
Però quan el tipus de dades és un enter, es produeix un error de desbordament.
# 4) Tipus de dades decimals
Es tracta d’un tipus de dades numèriques exactes que s’utilitza per a la seva precisió. És el nombre total de dígits i el nombre de dígits a la dreta del punt decimal anomenat factor d’escala.
A VBA, els nombres s’escalen amb una potència de 10. És adequat fer servir aquests tipus mentre es manipulen nombres grans que necessiten un valor precís. Ocupa 14 bytes de memòria.
Però les variables no es poden declarar directament com a tipus de dades decimals. Per utilitzar Decimal, heu d’utilitzar la funció de conversió CDec. Heu d’utilitzar un tipus de dades Variant.
Aquest tipus de dades conté l'interval de valors següent.
+/- 79.228.162.514.264.337.593.543.950.335 sense punt decimal
+/- 7.9228162514264337593543950335 amb 28 posicions decimals a la dreta del decimal.
El valor diferent de zero que s’accepta és +/- 0,0000000000000000000000000001.
Sintaxi: Dim s'encén com a variant
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 funció TypeName donarà el nom del tipus de dades
Sortida:
# 5) Tipus de dades únic
Aquest tipus de dades s’utilitza per emmagatzemar números amb punt flotant de precisió única. Ocupa 4 bytes de memòria. El valor per defecte és 0 i emmagatzema valors decimals. Podeu utilitzar el signe d’exclamació (!) Mentre declareu una variable tal com es mostra a la sintaxi següent.
Els valors acceptats són:
3.402823E38 a -1.401298E-45 per als valors negatius
1.401298E-45 a 3.402823E38 per a valors positius.
Sintaxi
Dim VariableName com a únic
o bé
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) Doble tipus de dades
Les dades de Double VBA es poden utilitzar per contenir fraccions i enters. El doble s’utilitza per emmagatzemar números amb punt flotant de doble precisió. Ocupa 8 bytes de memòria i té una gamma de valors.
-1.79769313486231E308 a -4.94065645841247E-324 per a valors negatius
4.94065645841247E-324 a 1.79769313486232E308 per a valors positius
Igual que el tipus de dades individuals, el doble també es pot declarar mitjançant un símbol que és Hash (#) com es mostra a continuació.
Sintaxi
Dim VariableName com a doble
o bé
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) Tipus de dades de moneda
Aquest tipus de dades pot ocupar fins a 8 bytes de mida d'emmagatzematge. Aquest tipus de dades dóna un valor exacte, a diferència dels tipus de dades simples i dobles que hem comentat ja que són arrodonits. Són útils per a càlculs monetaris.
El tipus de dades de divises pot emmagatzemar valors positius i negatius. Aquests poden emmagatzemar 15 dígits a l'esquerra del decimal i 4 dígits a la dreta.
L'interval permès és de -922.337.203.685.477,5808 a 922.337.203.685.477,5807. Podeu utilitzar @ per declarar els tipus de dades de moneda.
Sintaxi
Dim VariableName com a moneda
o bé
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
Sortida:
Nota :Si el valor de la variable supera l'interval proporcionat per a un tipus de dades concret, es generarà un error de desbordament.
Penseu en el simple exemple del tipus de dades de bytes que excedeix el seu rang. Es mostrarà el mateix error si introduïu valors negatius per al tipus de dades de bytes.
Tipus de dades no numèrics
Són dades que els operadors aritmètics no poden manipular. Comprèn text, cadena, data, etc. A continuació es detallen els tipus de dades no numèrics admesos a VBA.
Tipus de dades no numèric | |
---|---|
7 | Variant (personatges) |
1 | Cadena (longitud fixa) |
2 | Cadena (longitud variable) |
3 | Data |
4 | Booleà |
5 | Objecte |
6 | Variant (números) |
# 1) Tipus de dades booleans
Aquest tipus de dades requereix 2 bytes de memòria i només pot emmagatzemar 2 valors, és a dir, CERT o FALS. En altres paraules, la variable booleana només pot obtenir valor TRUE o FALSE, alternativament 1 o 0 respectivament. El valor per defecte d’una variable booleana és False.
Sintaxi: dim Vname com booleà
Exemple:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Tipus de dades de data
Aquest tipus de dades s’utilitza per representar la data i l’hora. Té valors d’interval de dates des de l’1 de gener de 0100 fins al 31 de desembre de 9999 i valors de temps de 0:00:00 a 23:59:59 i ocupa 8 bytes de mida d’emmagatzematge.
Sintaxi: Dim s'encén com a data
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Nota: La funció Ara dóna la data i l'hora actuals
# 3) Tipus de dades de cadena
Aquest tipus de dades s’utilitza per emmagatzemar el valor de la cadena. La cadena es defineix com una seqüència de caràcters. Per tant, podeu utilitzar el tipus de dades de cadena per emmagatzemar text i es pot utilitzar per emmagatzemar números, caràcters especials, s i espais d'esdeveniments. S'ha d'incloure un valor de cadena en cometes dobles ''.
Hi ha dos tipus de tipus de dades de cadena.
# 1) Cadena de longitud variable: Aquest tipus ocupa 10 bytes de mida d'emmagatzematge més la memòria necessària per a la cadena que és la longitud de la cadena. Tenen un valor d'entre 0 i aproximadament 2.000 milions.
# 2) Cadena de longitud fixa: Ocupa la memòria igual a la longitud de la pròpia cadena. Pot variar entre 1 i aproximadament 65.400 caràcters
Sintaxi: Dim Vname Com a cadena
Exemple:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Tipus de dades d'objecte
L'objecte tindrà una referència a un objecte de qualsevol tipus, és a dir, el tipus de dades d'objecte pot assenyalar qualsevol tipus de dades com ara cadena, doble, enter, etc. emmagatzemat. Ocupa 4 bytes de memòria de l'ordinador. El valor per defecte d'un objecte és una referència nul·la.
Sintaxi: Disminueix el nom de V com a objecte
programa per controlar la temperatura de la CPU i de la CPU
Exemple:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Això esborrarà totes les cel·les utilitzades del full actual.
# 5) Tipus de dades variant
Aquest és el tipus de dades universal de VBA, que pot acceptar qualsevol tipus de dades numèriques i no numèriques. El tipus de dades variant proporciona més flexibilitat mentre es treballa amb les dades. El tipus de dades variant utilitza més mida d’emmagatzematge que qualsevol altre tipus de dades. Si no mencioneu un tipus de dades, VBA el tractarà com una variable variant.
Hi ha 2 tipus de tipus de dades variant
descarregador de mp3 fàcil descarregar la versió completa
# 1) Variant (números): Pot contenir qualsevol valor numèric fins a l'interval de Doble. Els números de variant ocupen 16 bytes de mida d'emmagatzematge.
# 2) Variant (caràcters): Pot contenir el mateix interval que per a la cadena de longitud variable. Els caràcters Variant ocupen 22 bytes + longitud de cadena (24 bytes en sistemes de 64 bits)
Sintaxi
Dim VName Com a variant
o bé
Dim VName
Exemple:
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
Conversió de tipus de dades
De vegades es fa necessari convertir el tipus de dades d'una variable a alguna cosa específica en el nostre cas d'ús.
Exemple: Recupereu un valor d'una cel·la, que sol ser una cadena, i per tant, heu de convertir-lo a un tipus de dades numèriques abans de realitzar qualsevol operació aritmètica. Per aconseguir-ho, VBA té funcions de conversió de tipus per a tots els tipus de dades admesos.
# 1) CBool
Aquesta funció s’utilitza per convertir una expressió a un tipus de dades booleà. Si l'expressió torna zero, CBool retornarà False, qualsevol valor diferent de zero, CBool retornarà 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
El codi anterior retornarà els resultats com a False, True, False, True.
Podeu provar-ho vosaltres mateixos, dibuixar un botó d’ordres de control ActiveX, fer clic amb el botó dret -> Veure el codi i inserir el codi anterior. Feu clic al botó Ordre i es mostrarà el resultat. (Desactiva el mode de disseny)
Sortida
# 2) CByte
Aquesta funció s'utilitza per convertir una expressió a un tipus de dades de Byte. Recordeu després de la conversió si l'interval supera l'interval permès per a Byte, es generarà un error de desbordament.
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: Si doneu el valor com a 255,56. El proveïdor retornarà un error de desbordament
# 3) CCur
Aquesta funció convertirà una expressió en un tipus de dades de moneda.
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
Aquesta funció convertirà una cadena en una data. Suposem que recupereu el valor de la data com una cadena d'una cel·la Excel i, després, heu de convertir-lo abans de realitzar cap altra acció. Podeu utilitzar 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 funció CDbl s’utilitza per convertir una expressió a un tipus de dades doble.
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
Aquesta funció convertirà un valor numèric en decimal.
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 funció CInt convertirà un valor en un tipus de dades enter.
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
Aquesta funció s'utilitza per convertir un valor a un tipus de dades llarg
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
Aquesta funció convertirà un valor en un tipus de dades únic
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
Aquesta funció s'utilitza per convertir un valor numèric a un tipus de dades de cadena.
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
Aquesta funció convertirà una expressió en un tipus de dades 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
Preguntes freqüents
P # 1) Quin és el tipus de dades per defecte a VBA?
Resposta: La variant és la predeterminada. Si no definiu un tipus de dades d'una variable, VBA el tracta com una variant / objecte variant.
P # 2) Què és un error de no coincidència de tipus?
Resposta: Aquest error s'activarà quan declareu una variable com a un tipus de dades i assigneu un valor inadequat.
Exemple: Declareu una variable com a enter i introduïu un valor de text.
P # 3) Com puc solucionar un error de desbordament?
Resposta: Heu de referir-vos a l'interval on es permet un tipus de dades concret i assegureu-vos que introduïu un valor dins de l'interval permès.
Exemple: El byte només permet de 0 a 255, si introduïu un valor negatiu o un valor v superior a 255, apareix un error de desbordament.
Conclusió
En aquest tutorial, hem après sobre els tipus de dades VBA, és a dir, 7 tipus de dades numèriques i 7 no numèriques. També vam discutir com convertir un tipus de dades d’un tipus a un altre amb exemples.
=> Consulteu aquí per veure els tutorials de formació A-Z de VBA
Lectura recomanada
- Tutorial Excel VBA: introducció a VBA Excel
- Tipus de dades C ++
- Tipus de dades Python
- C # Tipus de dades i variables amb exemples
- Emissió de tipus C #: conversió de dades explícita i implícita amb un exemple
- Tipus de dades de matriu: matriu int, matriu doble, matriu de cadenes, etc.
- Tipus de dades MySQL | Quins són els diferents tipus de dades a MySQL