vba data types numeric
Denne vejledning forklarer forskellige numeriske og ikke-numeriske datatyper, der er tilgængelige i VBA. Vi lærer også om datatypekonverteringer :
Vi støder på mange typer data hver dag som navn, dato, regninger, pris på en vare osv. Alle disse data tilhører en bestemt type, og deres værdier kan ikke afvige fra den type, der er knyttet til den. Tilsvarende har VBA mange typer data, der bruges til at udføre den nødvendige handling.
I denne vejledning lærer vi de forskellige typer data, der bruges i VBA, og ser hvordan disse hjælper med at organisere vores program. Vi vil også se på at konvertere en datatype til en anden datatype.
venstre sammenføjning mod venstre ydre sammenføjning
=> Tjek ALLE VBA-vejledninger her
Hvad du vil lære:
- Kategorier af datatyper
- Konklusion
Kategorier af datatyper
Datatype fortæller computeren, hvilken type data der skal lagres ved hjælp af en variabel. Datatyper er opdelt i 2 kategorier, dvs. numeriske og ikke-numeriske datatyper
Numeriske datatyper
Disse typer bruges til at udføre matematiske operationer som Addition, Subtraktion osv. Eksempel, procentberegning, aktiekurs, gebyrer, regninger, alder osv.
I VBA er der 7 typer numeriske datatyper som nævnt nedenfor.
Numerisk datatype | |
---|---|
7 | Decimal |
1 | Byte |
to | Heltal |
3 | Lang |
4 | Enkelt |
5 | Dobbelt |
6 | betalingsmiddel |
Lad os se kort på alle de numeriske datatyper.
# 1) Byte-datatype
Denne datatype kræver kun en byte hukommelse. Variabler med datatypen Byte kan gemme værdier fra 0 til 255. Standardbyteværdien er 0. Negative værdier og værdier større end 255 er ikke tilladt. Hvis du forsøger at tildele ugyldige værdier, returneres en Overflow-fejl.
Syntaks: Dim Vname som byte
Her er Vname et variabelnavn, og Byte er datatypen for variablen.
Eksempel:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Outputtet er angivet nedenfor
# 2) Heltalsdatatype
Disse datatyper bruges til at gemme hele heltalets værdi. Dette optager 2 byte hukommelse. Et heltal er en af de hyppigst anvendte datatyper. De accepterer både positive værdier, negative værdier og nul også. De har et interval mellem -32.768 til 32.767.
Syntaks: Dim antændes som heltal
Eksempel:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Outputtet er angivet nedenfor
# 3) Lang datatype
Dette er et alternativ til en heltal datatype, der også gemmer en hel helhedsværdi. Det optager dog mere hukommelse end en heltalsvariabel, der er 4 bytes. Det har en række værdier fra -2,147,483,648 til 2,147,483,648
Syntaks: Dim vnavn så længe
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Hvis du udfører ovenstående kode med en heltalsvariabel, får du en overløbsfejl, fordi der er 1048576 rækker i Excel, og heltal datatype understøtter kun indtil 32.767. Som vist nedenfor, når datatypen er lang, vises et passende resultat.
Men når datatypen er et heltal, smides en overløbsfejl.
# 4) Decimal datatype
Dette er en nøjagtig numerisk datatype, der bruges til dens præcision. Det er det samlede antal cifre og antallet af cifre til højre for decimaltegnet kaldet en skaleringsfaktor.
I VBA skaleres tal med en styrke på 10. Det er passende at bruge disse typer, mens man manipulerer store tal, der har brug for en præcis værdi. Dette optager 14 byte i hukommelsen.
Men variabler kan ikke direkte erklæres som en decimaldatatype. For at bruge decimal skal du bruge CDec-konverteringsfunktionen. Du skal bruge en datatype Variant.
Denne datatype indeholder nedenstående række af værdier.
+/- 79.228.162.514.264.337.593.543.950.335 uden decimaltegn
+/- 7.9228162514264337593543950335 med 28 decimaler til højre for decimalen.
Den mindste værdi, der ikke accepteres, er +/- 0.0000000000000000000000000001.
Syntaks: Dim antændes som variant
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Bemærk: TypeName-funktionen giver datatypenavnet
Produktion:
# 5) Enkel datatype
Denne datatype bruges til at gemme numre med flydepunkt med en enkelt præcision. Det optager 4 byte hukommelse. Standardværdien er 0 og gemmer decimalværdier. Du kan bruge udråbstegn (!), Mens du erklærer en variabel som vist i syntaksen nedenfor.
Det accepterede interval af værdier er:
3.402823E38 til -1.401298E-45 for negative værdier
1.401298E-45 til 3.402823E38 for positive værdier.
Syntaks
Dim variabelnavn som enkelt
eller
Dim variabelnavn!
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) Dobbelt datatype
Double VBA-data kan bruges til at indeholde både heltal og brøker. Dobbelt bruges til at gemme numre med flydepunkt med dobbelt præcision. Det optager 8 byte hukommelse og har en række værdier.
-1,79769313486231E308 til -4,94065645841247E-324 for negative værdier
4.94065645841247E-324 til 1.79769313486232E308 for positive værdier
Som en enkelt datatype kan dobbelt også erklæres ved hjælp af et symbol, der er Hash (#) som vist nedenfor.
Syntaks
Dim variabelnavn som dobbelt
eller
Dim variabelnavn #
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) Valutadatatype
Denne datatype kan tage op til 8 byte lagerstørrelse. Denne type data giver nøjagtig værdi, i modsætning til enkelt- og dobbeltdatatyper, som vi allerede diskuterede, er afrundede. Disse er nyttige til monetære beregninger.
Valutadatatypen kan gemme både positive og negative værdier. Disse kan gemme 15 cifre til venstre for decimalen og 4 cifre til højre.
Tilladt interval er -922.337.203.685.477.5808 til 922.337.203.685.477.5807. Du kan bruge @ til at erklære valutadatatyper.
Syntaks
Dim variabelnavn som valuta
eller
Dim variabelnavn @
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
Produktion:
Bemærk :Hvis værdien af variablen overstiger det angivne interval for en bestemt datatype, kastes en overløbsfejl.
Overvej det enkle eksempel på byte-datatypen, der overskrider dens rækkevidde. Den samme fejl vises, hvis du indtaster negative værdier for byte-datatypen.
Ikke-numeriske datatyper
Dette er data, der ikke kan manipuleres af aritmetiske operatører. De består af tekst, streng, dato osv. Nedenfor er de ikke-numeriske datatyper, der understøttes i VBA.
Ikke-numerisk datatype | |
---|---|
7 | Variant (tegn) |
1 | Streng (fast længde) |
to | Streng (variabel længde) |
3 | Dato |
4 | Boolsk |
5 | Objekt |
6 | Variant (tal) |
# 1) Boolsk datatype
Denne datatype kræver 2 byte hukommelse og kan kun gemme 2 værdier, dvs. SAND eller FALSK. Med andre ord kan den boolske variabel kun få værdi enten SAND eller FALSK, alternativt henholdsvis 1 eller 0. Standardværdien af en boolsk variabel er Falsk.
Syntaks - dæmpet Vnavn som boolsk
Eksempel:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Datodatatype
Denne datatype bruges til at repræsentere dato og klokkeslæt. Den har datointervalværdier fra 1. jan. 0100 til 31. december 9999 og tidsværdier fra 0:00:00 til 23:59:59 og optager 8 byte lagerstørrelse.
Syntaks: Dim antændes som dato
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Bemærk: Nu-funktionen giver den aktuelle dato og tid
# 3) Strengdatatype
Denne datatype bruges til at gemme strengværdi. Strengen defineres som en række af tegn. Så du kan bruge String-datatypen til at gemme tekst og kan bruges til at gemme numre, specialtegn, s og hændelsesrum. En strengværdi skal integreres i et dobbelt anførselstegn “”.
Der er to typer strengdatatype.
# 1) Variabel længde streng: Denne type optager 10 byte lagerstørrelse plus den krævede hukommelse til den streng, der er strenglængden. De har en intervalværdi fra 0 til ca. 2 mia.
# 2) streng med fast længde: Det optager hukommelsen svarende til selve strengens længde. Det kan variere fra 1 til cirka 65.400 tegn
Syntaks: Dæmp Vnavn som streng
Eksempel:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Objektdatatype
Objekt vil have en henvisning til et objekt af enhver type, dvs. objektdatatype kan pege på enhver datatype som streng, dobbelt, heltal osv. Objektvariablen indeholder ikke værdien, den peger kun på den adresse, hvor dataene er gemt. Det optager 4 byte computerhukommelse. Standardværdien for et objekt er en null-reference.
Syntaks: Dæmp Vnavn som objekt
Eksempel:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Dette rydder alle de anvendte celler i det aktuelle ark.
# 5) Variantdatatype
Dette er den universelle datatype for VBA, den kan acceptere enhver form for data numerisk og ikke-numerisk. Variantdatatype giver mere fleksibilitet, mens du arbejder med data. Variantdatatype bruger mere lagerstørrelse end nogen anden datatype. Hvis du ikke nævner en datatype, behandler VBA det som en variabelvariabel.
Der er 2 typer Variant-datatyper
# 1) Variant (tal): Dette kan indeholde en hvilken som helst numerisk værdi op til området Double. Variantnumrene optager 16 byte lagerstørrelse.
# 2) Variant (tegn): Dette kan indeholde det samme område som for streng med variabel længde. Varianttegnene optager 22 byte + strenglængde (24 byte på 64-bit-systemer)
Syntaks
virksomheder involveret i tingernes internet
Dim VName Som Variant
eller
Dim Vnavn
Eksempel:
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
Konvertering af datatype
Nogle gange bliver det nødvendigt at konvertere datatypen for en variabel til noget specifikt i vores brugssag.
Eksempel: Du henter en værdi fra en celle, som normalt er en streng, og derfor skal du konvertere den til en numerisk datatype, før du udfører en aritmetisk operation. For at opnå dette har VBA typekonverteringsfunktioner til alle understøttede datatyper.
# 1) CBool
Denne funktion bruges til at konvertere et udtryk til en boolsk datatype. Hvis udtrykket returnerer nul, returnerer CBool False, enhver ikke-nul værdi, CBool returnerer 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
Ovenstående kode vil returnere resultater som False, True, False, True.
Du kan prøve selv, tegne en ActiveX-kontrolkommandoknap, højreklikke -> Vis kode og indsæt ovenstående kode. Klik på kommandoknappen, så vises resultatet. (Deaktiver designtilstand)
Produktion
# 2) CByte
Denne funktion bruges til at konvertere et udtryk til en Byte-datatype. Husk efter konvertering, hvis området overstiger det tilladte interval for Byte, så kastes en Overflow-fejl.
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
Bemærk: Hvis du angiver værdien som 255,56. Complier returnerer en overløbsfejl
# 3) CCur
Denne funktion konverterer et udtryk til en valuta-datatype.
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
Denne funktion konverterer en streng til en dato. Antag, at du henter datoværdien som en streng fra en excelcelle, så skal du konvertere den, før du udfører yderligere handlinger. Du kan bruge 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
CDbl-funktionen bruges til at konvertere et udtryk til en dobbelt datatype.
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
Denne funktion konverterer en numerisk værdi til 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
CInt-funktion konverterer en værdi til en heltal datatype.
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
Denne funktion bruges til at konvertere en værdi til en lang datatype
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
Denne funktion konverterer en værdi til en enkelt datatype
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
Denne funktion bruges til at konvertere en numerisk værdi til en strengdatatype.
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
Denne funktion konverterer et udtryk til en Variant-datatype.
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
Ofte stillede spørgsmål
Q # 1) Hvad er standarddatatypen i VBA?
Svar: Variant er standard. Hvis du ikke definerer en datatype for en variabel, behandler VBA den som en variantvariabel / objekt.
Q # 2) Hvad er en type fejltilpasningsfejl?
Svar: Denne fejl udløses, når du erklærer en variabel som én datatype og tildeler en upassende værdi.
Eksempel: Erklær en variabel som heltal, og indtast en tekstværdi.
Spørgsmål nr. 3) Hvordan løser jeg en fejl i overløb?
Svar: Du skal henvise til det område, som en bestemt datatype er tilladt, og sørg for at indtaste en værdi inden for det tilladte område.
Eksempel: Byte tillader kun 0 til 255, hvis du indtaster en negativ værdi eller v-værdi mere end 255, støder du på en overløbsfejl.
Konklusion
I denne vejledning har vi lært om VBA-datatyper, dvs. 7 numeriske og 7 ikke-numeriske datatyper. Vi diskuterede også, hvordan man konverterer en datatype fra en type til en anden med eksempler.
=> Tjek her for at se AZ af VBA-træningsvejledninger
Anbefalet læsning
- Excel VBA-vejledning - Introduktion til VBA i Excel
- C ++ datatyper
- Python-datatyper
- C # Datatyper og variabler med eksempler
- C # Type Casting: Eksplicit & Implicit datakonvertering med eksempel
- Array-datatyper - int Array, Double array, Array of Strings Etc.
- MySQL datatyper | Hvad er forskellige datatyper i MySQL