vba data types numeric
Denne opplæringen forklarer forskjellige numeriske og ikke-numeriske datatyper som er tilgjengelige i VBA. Vi vil også lære om datatypekonverteringer :
Vi kommer over mange typer data hver dag som navn, dato, regninger, pris på en vare osv. Alle disse dataene tilhører en bestemt type, og deres verdier kan ikke avvike fra typen som er knyttet til den. Tilsvarende har VBA mange typer data som brukes til å utføre den nødvendige handlingen.
I denne opplæringen vil vi lære de forskjellige typene data som brukes i VBA, og se hvordan de vil hjelpe til med å organisere programmet vårt. Vi vil også se på å konvertere en datatype til en annen datatype.
=> Sjekk ALLE VBA-veiledninger her
Hva du vil lære:
- Kategorier av datatyper
- Konklusjon
Kategorier av datatyper
Datatype forteller datamaskinen hvilken type data som må lagres ved hjelp av en variabel. Datatyper er delt inn i to kategorier, dvs. numeriske og ikke-numeriske datatyper
Numeriske datatyper
Disse typene brukes til å utføre matematiske operasjoner som Addisjon, Subtraksjon, etc. Eksempel, prosentberegning, aksjekurs, gebyrer, regninger, alder osv.
I VBA er det 7 typer numeriske datatyper som nevnt nedenfor.
Numerisk datatype | |
---|---|
7 | Desimal |
en | Byte |
to | Heltall |
3 | Lang |
4 | Enkelt |
5 | Dobbelt |
6 | Valuta |
La oss ta en kort titt på alle de numeriske datatypene.
# 1) Byte-datatype
Denne datatypen krever bare en byte minne. Variabler med datatype Byte kan lagre verdier fra 0 til 255. Standard byteverdi er 0. Negative verdier og verdier større enn 255 er ikke tillatt. I tilfelle du prøver å tilordne ugyldige verdier, returneres en overflødefeil.
Syntaks: Dim Vname As Byte
Her er Vname et variabelnavn og Byte er datatypen til variabelen.
Eksempel:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Resultatet er gitt nedenfor
# 2) Heltalldatatype
Disse datatypene brukes til å lagre hele hele verdien. Dette opptar 2 byte minne. Et heltall er en av de ofte brukte datatypene. De aksepterer både positive verdier, negative verdier og null også. De har et område mellom -32 768 til 32 767.
Syntaks: Dim antennes 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
Resultatet er gitt nedenfor
# 3) Lang datatype
Dette er et alternativ til en heltalsdatatype som også lagrer en hel heltalsverdi. Imidlertid opptar den mer minne enn en heltallvariabel som er 4 byte. Den har en rekke verdier fra -2,147,483,648 til 2,147,483,648
Syntaks: Demp vnavn så lenge
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Hvis du utfører ovennevnte kode med en heltallvariabel, får du en overflytningsfeil fordi det er 1048576 rader i Excel og Integer-datatypen støtter bare inntil 32,767. Som vist nedenfor når datatypen er lang, vises et passende resultat.
Men når datatypen er et helt tall, kastes en overflytningsfeil.
# 4) Desimal datatype
Dette er en nøyaktig numerisk datatype som brukes for sin presisjon. Det er totalt antall sifre og antall sifre til høyre for desimaltegnet som kalles en skaleringsfaktor.
I VBA skaleres tallene med en styrke på 10. Det er hensiktsmessig å bruke disse typene mens man manipulerer store tall som trenger en presis verdi. Dette opptar 14 byte i minnet.
Men variabler kan ikke deklareres direkte som en desimaldatatype. For å bruke desimal, må du bruke CDec-konverteringsfunksjonen. Du må bruke en datatype Variant.
Denne datatypen inneholder verdiområdet nedenfor.
+/- 79.228.162.514.264.337.593.543.950.335 uten desimaltegn
+/- 7.9228162514264337593543950335 med 28 desimaler til høyre for desimal.
Den minste aksepterte ikke-nullverdien er +/- 0.0000000000000000000000000001.
Syntaks: Dim antennes 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
Merk: TypeName-funksjonen vil gi datatypenavnet
Produksjon:
# 5) Enkelt datatype
Denne datatypen brukes til å lagre tall med flytende punkt med en presisjon. Det opptar 4 byte minne. Standardverdien er 0 og lagrer desimalverdier. Du kan bruke utropstegnet (!) Mens du erklærer en variabel som vist i syntaksen nedenfor.
Det aksepterte verdiområdet er:
3.402823E38 til -1.401298E-45 for negative verdier
1.401298E-45 til 3.402823E38 for positive verdier.
Syntaks
Dim variabelnavn som enkelt
eller
Dim VariableName!
beste mp3 nedlasting for Windows 10
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-dataene kan brukes til å holde både heltall og brøker. Dobbelt brukes til å lagre tall med flytende punkt med dobbelt presisjon. Den har 8 byte minne og har en rekke verdier.
-1,79769313486231E308 til -4,94065645841247E-324 for negative verdier
4.94065645841247E-324 til 1.79769313486232E308 for positive verdier
Som en enkelt datatype kan dobbelt også erklæres ved hjelp av et symbol som er Hash (#) som vist nedenfor.
Syntaks
Dim variabelnavn som dobbelt
eller
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) Valutadatatype
Denne datatypen kan ta opptil 8 byte lagringsstørrelse. Denne typen data gir nøyaktig verdi, i motsetning til enkle og doble datatyper vi allerede har diskutert, er avrundet. Disse er nyttige for monetære beregninger.
Valutadatatypen kan lagre både positive og negative verdier. Disse kan lagre 15 sifre til venstre for desimal og 4 sifre til høyre.
Tillatt rekkevidde er -922,337,203,685,477,5808 til 922,337,203,685,477,5807. Du kan bruke @ til å erklære valutadatatyper.
Syntaks
Demp variabelnavn som valuta
eller
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
Produksjon:
Merk :Hvis verdien av variabelen overstiger det angitte området for en bestemt datatype, vil en overflytfeil bli kastet.
Tenk på det enkle eksemplet på byte-datatypen som overskrider rekkevidden. Den samme feilen vises hvis du skriver inn negative verdier for byte-datatypen.
Ikke-numeriske datatyper
Dette er data som ikke kan manipuleres av regneoperatører. De består av tekst, streng, dato osv. Nedenfor er ikke-numeriske datatyper som støttes i VBA.
Ikke-numerisk datatype | |
---|---|
7 | Variant (tegn) |
en | Streng (fast lengde) |
to | Streng (variabel lengde) |
3 | Dato |
4 | Boolsk |
5 | Gjenstand |
6 | Variant (tall) |
# 1) Boolsk datatype
Denne datatypen krever 2 byte minne og kan bare lagre to verdier, dvs. SANN eller FALSK. Med andre ord kan den boolske variabelen bare få verdi enten SANN eller FALSK, alternativt henholdsvis 1 eller 0. Standardverdien for en boolsk variabel er False.
Syntaks - Dim Vname As Boolean
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) Datatype
Denne datatypen brukes til å representere dato og klokkeslett. Den har datoperiodeverdier fra 1. januar 0100 til 31. desember 9999 og tidsverdier fra 0:00:00 til 23:59:59 og opptar 8 byte lagringsstørrelse.
hvordan du viser en swf-fil
Syntaks: Dim antennes som dato
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Merk: Nå-funksjonen gir gjeldende dato og klokkeslett
# 3) Strengdatatype
Denne datatypen brukes til å lagre strengverdi. Strengen er definert som en sekvens av tegn. Så du kan bruke String-datatypen til å lagre tekst og kan brukes til å lagre tall, spesialtegn, s og hendelsesområder. En strengverdi skal være innebygd i et dobbelt anførselstegn “”.
Det er to typer String-datatyper.
# 1) Variabel lengde streng: Denne typen har 10 byte lagringsstørrelse pluss minnet som kreves for strengen som er strenglengden. De har en rekkevidde fra 0 til omtrent 2 milliarder.
# 2) Fast lengde streng: Det opptar minnet lik lengden på selve strengen. Det kan variere fra 1 til omtrent 65.400 tegn
Syntaks: Dim Vname As String
Eksempel:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Objektdatatype
Objekt vil ha en referanse til et objekt av hvilken som helst type, dvs. objektdatatype kan peke på hvilken som helst datatype som streng, dobbelt, heltall osv. Objektvariabelen inneholder ikke verdien, den peker bare til adressen der dataene er lagret. Den har 4 byte dataminne. Standardverdien til et objekt er en nullreferanse.
Syntaks: Demp Vnavn som objekt
Eksempel:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Dette vil fjerne alle brukte celler i det gjeldende arket.
# 5) Variantdatatype
Dette er den universelle datatypen VBA, den kan akseptere alle slags data numeriske og ikke-numeriske. Variantdatatype gir mer fleksibilitet mens du arbeider med data. Variantdatatype bruker større lagringsstørrelse enn noen annen datatype. Hvis du ikke nevner en datatype, vil VBA behandle det som en variabelvariabel.
Det finnes to typer datatyper for varianter
# 1) Variant (tall): Dette kan inneholde en hvilken som helst numerisk verdi opp til området Dobbelt. Variantnumrene opptar 16 byte lagringsstørrelse.
# 2) Variant (tegn): Dette kan inneholde samme område som for streng med variabel lengde. Varianttegnene opptar 22 byte + strenglengde (24 byte på 64-biters systemer)
Syntaks
Dim VName Som Variant
eller
Dim VName
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 av datatype
Noen ganger blir det nødvendig å konvertere datatypen til en variabel til noe spesifikt i vårt tilfelle.
Eksempel: Du henter en verdi fra en celle, som vanligvis er en streng, og derfor må du konvertere den til en numerisk datatype før du utfører en aritmetisk operasjon. For å oppnå dette har VBA typekonverteringsfunksjoner for alle datatypene som støttes.
# 1) CBool
Denne funksjonen brukes til å konvertere et uttrykk til en boolsk datatype. Hvis uttrykket returnerer null, vil CBool returnere False, hvilken som helst verdi som ikke er null, og 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
Ovennevnte kode vil gi resultater som False, True, False, True.
Du kan prøve selv, tegne en ActiveX-kontrollkommandoknapp, høyreklikke -> Vis kode og sett inn koden ovenfor. Klikk på Kommando-knappen og resultatet vises. (Deaktiver designmodus)
Produksjon
# 2) CByte
Denne funksjonen brukes til å konvertere et uttrykk til en Byte-datatype. Husk etter konvertering at hvis området overskrider området som er tillatt for Byte, vil en overstrømningsfeil bli kastet.
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
Merk: Hvis du oppgir verdien 255,56. Complier vil returnere en overløpsfeil
# 3) CCur
Denne funksjonen vil konvertere et uttrykk 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 funksjonen konverterer en streng til en dato. Anta at du henter datoverdien som en streng fra en excel-celle, så må du konvertere den før du utfører ytterligere handlinger. Du kan bruke 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-funksjonen brukes til å konvertere et uttrykk til en dobbel 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 funksjonen vil konvertere en numerisk verdi til desimal.
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-funksjonen konverterer en verdi 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 funksjonen brukes til å konvertere en verdi 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 funksjonen vil konvertere en verdi 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 funksjonen brukes til å konvertere en numerisk verdi til en streng datatype.
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 funksjonen vil konvertere et uttrykk til en datatype 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
ofte stilte spørsmål
Q # 1) Hva er standard datatype i VBA?
Svar: Varianten er standard. Hvis du ikke definerer en datatype for en variabel, behandler VBA den som en variantvariabel / objekt.
Spørsmål nr. 2) Hva er en feil med typen feil?
Svar: Denne feilen utløses når du erklærer en variabel som en datatype og tilordner en upassende verdi.
Eksempel: Erklær en variabel som heltall og skriv inn en tekstverdi.
Spørsmål 3) Hvordan løser jeg en overflødefeil?
Svar: Du må referere til området som bestemt datatype er tillatt, og sørg for at du angir en verdi innenfor det tillatte området.
Eksempel: Byte tillater bare 0 til 255, hvis du skriver inn en negativ verdi eller v-verdi mer enn 255, støter du på en overflytfeil.
Konklusjon
I denne opplæringen har vi lært om VBA-datatyper, dvs. 7 numeriske og 7 ikke-numeriske datatyper. Vi diskuterte også hvordan man konverterer en datatype fra en type til en annen med eksempler.
=> Sjekk her for å se AZ av VBA-opplæringsveiledninger
Anbefalt lesing
- Excel VBA Tutorial - Introduksjon til VBA i Excel
- C ++ datatyper
- Python datatyper
- C # Datatyper og variabler med eksempler
- C # Type Casting: Eksplisitt og implisitt datakonvertering med eksempel
- Array Data Typer - int Array, Double array, Array of Strings Etc.
- MySQL datatyper | Hva er forskjellige datatyper i MySQL