vba data types numeric
Acest tutorial explică diferite tipuri de date numerice și non-numerice disponibile în VBA. Vom afla și despre conversiile de tipuri de date :
Întâlnim zilnic mai multe tipuri de date, cum ar fi numele, data, facturile, prețul unei mărfuri etc. Toate aceste date aparțin unui anumit tip și valorile lor nu se pot amâna de la tipul atașat acestuia. În mod similar, VBA are multe tipuri de date care sunt utilizate pentru a efectua acțiunea necesară.
În acest tutorial, vom învăța diferitele tipuri de date utilizate în VBA și vom vedea cum acestea vor ajuta la organizarea programului nostru. De asemenea, vom analiza conversia unui tip de date în alt tip de date.
=> Consultați TOATE tutorialele VBA aici
Ce veți învăța:
- Categorii de tipuri de date
- Concluzie
Categorii de tipuri de date
Tipul de date indică computerului tipul de date care trebuie stocate utilizând o variabilă. Tipurile de date sunt împărțite în 2 categorii, adică tipuri de date numerice și non-numerice
Tipuri de date numerice
Aceste tipuri sunt utilizate pentru a efectua operații matematice cum ar fi Adunarea, Scăderea etc. Exemplu, calcul procentual, preț acțiuni, taxe, facturi, vârstă etc.
În VBA există 7 tipuri de tipuri de date numerice, după cum se menționează mai jos.
Tipul numeric de date | |
---|---|
7 | Zecimal |
1 | Octet |
Două | Întreg |
3 | Lung |
4 | Singur |
5 | Dubla |
6 | Valută |
Să aruncăm o scurtă privire asupra tuturor tipurilor de date numerice.
# 1) Tipul de date de octeți
Acest tip de date necesită doar un octet de memorie. Variabilele cu tip de date Byte pot stoca valori de la 0 la 255. Valoarea implicită a octetului este 0. Nu sunt permise valori negative și valori mai mari de 255. În cazul în care încercați să atribuiți valori nevalide, va fi returnată o eroare de depășire.
Sintaxă: Dim Vname As Byte
Aici Vname este un nume de variabilă, iar Byte este tipul de date al variabilei.
Exemplu:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Ieșirea este dată mai jos
# 2) Tip de date întregi
Aceste tipuri de date sunt utilizate pentru a stoca întreaga valoare întreagă. Aceasta ocupă 2 octeți de memorie. Un număr întreg este unul dintre tipurile de date utilizate frecvent. Aceștia acceptă atât valori pozitive, cât și valori negative și zero. Au un interval cuprins între -32.768 și 32.767.
Sintaxă: Dim se aprinde Ca întreg
Exemplu:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Ieșirea este dată mai jos
# 3) Tip de date lung
Aceasta este o alternativă la un tip de date întregi care stochează și o valoare întreagă întreagă. Cu toate acestea, ocupă mai multă memorie decât o variabilă întreagă care este de 4 octeți. Are o gamă de valori de la -2.147.483.648 la 2.147.483.648
Sintaxă: 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
Dacă executați codul de mai sus cu o variabilă întreagă, veți primi o eroare de depășire deoarece există 1048576 rânduri în Excel și tipul de date Integer acceptă doar până la 32.767. Așa cum se arată mai jos când tipul de date este lung, este afișat un rezultat adecvat.
Dar când tipul de date este întreg, atunci se aruncă o eroare de depășire.
# 4) Tipul de date zecimal
Acesta este un tip de date numerice exact care este utilizat pentru precizia sa. Acesta este numărul total de cifre și numărul de cifre din dreapta punctului zecimal numit factor de scalare.
În VBA, numerele sunt reduse la o putere de 10. Este adecvat să folosiți aceste tipuri în timp ce manipulați numere mari care au nevoie de o valoare precisă. Aceasta ocupă 14 octeți în memorie.
Dar variabilele nu pot fi declarate direct ca un tip de date zecimal. Pentru a utiliza Decimal, trebuie să utilizați funcția de conversie CDec. Trebuie să utilizați un tip de date Variant.
Acest tip de date conține intervalul de valori de mai jos.
+/- 79.228.162.514.264.337.593.543.950.335 fără punct zecimal
+/- 7.9228162514264337593543950335 cu 28 de zecimale în dreapta zecimalei.
Cea mai mică valoare non-zero acceptată este +/- 0,0000000000000000000000000001.
Sintaxă: Dim se aprinde Ca variantă
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Notă: Funcția TypeName va da numele tipului de date
Ieșire:
# 5) Tip unic de date
Acest tip de date este utilizat pentru a stoca numere cu virgulă mobilă de o singură precizie. Ocupă 4 octeți de memorie. Valoarea implicită este 0 și stochează valorile zecimale. Puteți utiliza semnul Exclamare (!) În timp ce declarați o variabilă așa cum se arată în sintaxa de mai jos.
Gama acceptată de valori este:
3.402823E38 la -1.401298E-45 pentru valori negative
1.401298E-45 la 3.402823E38 pentru valori pozitive.
Sintaxă
Dim VariableName ca single
sau
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) Tip de date dublu
Datele Double VBA pot fi utilizate pentru a conține atât numere întregi, cât și fracții. Dublu este folosit pentru a stoca numere cu virgulă mobilă de precizie dublă. Ocupă 8 octeți de memorie și are o gamă de valori.
-1.79769313486231E308 până la -4.94065645841247E-324 pentru valori negative
4.94065645841247E-324 până la 1.79769313486232E308 pentru valori pozitive
La fel ca tipul de date Single, dublul poate fi de asemenea declarat folosind un simbol care este Hash (#) așa cum se arată mai jos.
Sintaxă
Dim VariableName ca Dublu
sau
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) Tip de date valutare
Acest tip de date poate ocupa până la 8 octeți de dimensiune de stocare. Acest tip de date oferă o valoare exactă, spre deosebire de tipurile de date simple și duble despre care am discutat deja sunt rotunjite. Acestea sunt utile pentru calculele monetare.
Tipul de date valutare poate stoca atât valori pozitive, cât și valori negative. Acestea pot stoca 15 cifre în stânga zecimalei și 4 cifre în dreapta.
Intervalul permis este de -922.337.203.685.477,5808 până la 922.337.203.685.477,5807. Puteți utiliza @ pentru a declara tipurile de date valutare.
Sintaxă
Dim VariableName ca monedă
sau
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
Ieșire:
Notă :Dacă valoarea variabilei depășește intervalul furnizat pentru un anumit tip de date, atunci va fi aruncată o eroare de depășire.
Luați în considerare exemplul simplu al tipului de date de octeți care depășește intervalul său. Aceeași eroare va fi afișată dacă introduceți valori negative pentru tipul de date de octeți.
Tipuri de date non-numerice
Acestea sunt date care nu pot fi manipulate de operatorii aritmetici. Acestea cuprind text, șir, dată etc. Datele de mai jos sunt tipurile de date nenumerice acceptate în VBA.
Tip de date non-numerice | |
---|---|
7 | Varianta (caractere) |
1 | Șir (lungime fixă) |
Două | Șir (lungime variabilă) |
3 | Data |
4 | Boolean |
5 | Obiect |
6 | Varianta (numere) |
# 1) Tipul de date boolean
Acest tip de date necesită 2 octeți de memorie și poate stoca doar 2 valori, adică ADEVĂRAT sau FALS. Cu alte cuvinte, variabila booleană poate obține doar valoare TRUE sau FALSE, alternativ 1 sau respectiv 0. Valoarea implicită a unei variabile booleene este False.
Sintaxă - Dim Vname Ca boolean
Exemplu:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Data tipului de date
Acest tip de date este utilizat pentru a reprezenta data și ora. Are valori ale intervalului de date de la 1 ianuarie 0100 la 31 decembrie 9999 și valori de timp de la 0:00:00 la 23:59:59 și ocupă 8 octeți de dimensiune de stocare.
Sintaxă: Dim se aprinde ca dată
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Notă: Funcția Now oferă data și ora curente
# 3) Tipul de date șir
Acest tip de date este utilizat pentru a stoca valoarea șirului. Șirul este definit ca o secvență de caractere. Deci, puteți utiliza tipul de date String pentru a stoca text și poate fi utilizat pentru a stoca numere, caractere speciale, s și spații pentru evenimente. O valoare șir ar trebui să fie încorporată într-un ghilimel dublu „”.
Există 2 tipuri de tipuri de date String.
# 1) Șir de lungime variabilă: Acest tip ocupă 10 octeți de dimensiune de stocare plus memoria necesară șirului care este lungimea șirului. Au o valoare de la 0 la aproximativ 2 miliarde.
# 2) Șir de lungime fixă: Ocupă memoria egală cu lungimea șirului în sine. Poate varia de la 1 la aproximativ 65.400 de caractere
Sintaxă: Dim Vname As String
Exemplu:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Tipul de date al obiectului
Obiectul va avea o referință la un obiect de orice tip, de exemplu, tipul de date al obiectului poate indica orice tip de date precum șir, dublu, întreg, etc. stocat. Ocupă 4 octeți de memorie a computerului. Valoarea implicită a unui obiect este o referință nulă.
Sintaxă: Dim VName Ca obiect
Exemplu:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Aceasta va șterge toate celulele utilizate în foaia curentă.
# 5) Tip de date variante
Acesta este tipul de date universal al VBA, poate accepta orice fel de date numerice și nenumerice. Tipul de date variante oferă mai multă flexibilitate în timp ce lucrați cu date. Tipul de date variante utilizează mai multe dimensiuni de stocare decât orice alt tip de date. Dacă nu menționați un tip de date, VBA o va trata ca pe o variabilă Variant.
Există 2 tipuri de tipuri de date variante
Implementarea listei c ++ legată dublu
# 1) Varianta (numere): Aceasta poate conține orice valoare numerică până la intervalul Double. Numerele variantei ocupă 16 octeți de dimensiune de stocare.
# 2) Varianta (caractere): Acesta poate conține același interval ca și pentru șirul cu lungime variabilă. Caracterele Variant ocupă 22 de octeți + lungimea șirului (24 de octeți pe sistemele pe 64 de biți)
Sintaxă
Dim VName Ca variantă
sau
Dim VName
Exemplu:
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
Conversia tipului de date
Uneori devine necesar să convertim tipul de date al unei variabile în ceva specific în cazul nostru de utilizare.
Exemplu: Obțineți o valoare dintr-o celulă, care este de obicei un șir și, prin urmare, trebuie să o convertiți într-un tip de date numerice înainte de a efectua orice operație aritmetică. Pentru a realiza acest lucru, VBA are funcții de conversie a tipurilor pentru toate tipurile de date acceptate.
# 1) CBool
Această funcție este utilizată pentru a converti o expresie într-un tip de date boolean. Dacă expresia returnează zero, atunci CBool va returna False, orice valoare diferită de zero, CBool returnează 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
Codul de mai sus va returna rezultatele ca False, True, False, True.
Puteți încerca singur, desenați un buton de comandă de control ActiveX, faceți clic dreapta -> Vizualizați codul și introduceți codul de mai sus. Faceți clic pe butonul Comandă și rezultatul va fi afișat. (Dezactivați modul de proiectare)
Ieșire
# 2) CByte
Această funcție este utilizată pentru a converti o expresie într-un tip de date Byte. Amintiți-vă după conversie dacă intervalul depășește intervalul permis pentru octeți, atunci va fi aruncată o eroare de depășire.
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
Notă: Dacă dați valoarea ca 255,56. Complierul va returna o eroare de depășire
# 3) CCur
Această funcție va converti o expresie într-un tip de monedă.
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
Această funcție va converti un șir într-o dată. Să presupunem că preluați valoarea Date ca un șir dintr-o celulă Excel, atunci trebuie să o convertiți înainte de a efectua orice altă acțiune. Puteți utiliza 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
Funcția CDbl este utilizată pentru a converti o expresie într-un tip de date dublu.
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
Această funcție va converti o valoare numerică în Zecimal.
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
Funcția CInt va converti o valoare într-un tip de date întreg.
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
Această funcție este utilizată pentru a converti o valoare într-un tip de date lung
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
Această funcție va converti o valoare într-un singur tip de date
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
Această funcție este utilizată pentru a converti o valoare numerică într-un tip de date șir.
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
Această funcție va converti o expresie într-un tip de date 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
întrebări frecvente
Q # 1) Care este tipul de date implicit în VBA?
Răspuns: Varianta este cea implicită. Dacă nu definiți un tip de date al unei variabile, atunci VBA îl tratează ca o variantă variabilă / obiect.
Q # 2) Ce este o eroare de nepotrivire de tip?
Răspuns: Această eroare va fi declanșată atunci când declarați o variabilă ca un singur tip de date și atribuiți o valoare inadecvată.
Exemplu: Declarați o variabilă ca Număr întreg și introduceți o valoare text.
Î. 3) Cum remediez o eroare de depășire?
Răspuns: Trebuie să faceți referire la intervalul în care este permis un anumit tip de date și asigurați-vă că introduceți o valoare în intervalul permis.
Exemplu: Byte permite doar 0 până la 255, dacă introduceți orice valoare negativă sau v valoare mai mare de 255, atunci veți întâlni o eroare de depășire.
Concluzie
În acest tutorial, am aflat despre tipurile de date VBA, adică 7 tipuri de date numerice și 7 tipuri de date non-numerice. De asemenea, am discutat despre cum se poate converti un tip de date de la un tip la altul cu exemple.
=> Verificați aici pentru a vedea tutorialele de instruire VBA A-Z
Lectură recomandată
- Tutorial Excel VBA - Introducere în VBA în Excel
- Tipuri de date C ++
- Tipuri de date Python
- Tipuri de date C # și variabile cu exemple
- Distribuție de tip C #: conversie de date explicită și implicită cu exemplu
- Tipuri de date matrice - matrice int, matrice dublă, matrice de șiruri etc.
- Tipuri de date MySQL | Care sunt diferitele tipuri de date în MySQL