vba data types numeric
Denna handledning förklarar olika numeriska och icke-numeriska datatyper som finns tillgängliga i VBA. Vi lär oss också om konvertering av datatyp :
Vi stöter på många typer av data varje dag som namn, datum, räkningar, pris på en vara etc. Alla dessa uppgifter tillhör en viss typ och deras värden kan inte avvika från den typ som är kopplad till den. På samma sätt har VBA många typer av data som används för att utföra den nödvändiga åtgärden.
I den här handledningen lär vi oss de olika typerna av data som används i VBA och ser hur de kommer att hjälpa till med att organisera vårt program. Vi kommer också att undersöka omvandling av en datatyp till en annan datatyp.
=> Kontrollera ALLA VBA-handledning här
Vad du kommer att lära dig:
- Kategorier av datatyper
- Slutsats
Kategorier av datatyper
Datatyp berättar för datorn vilken typ av data som behöver lagras med hjälp av en variabel. Datatyper är indelade i två kategorier, dvs. numeriska och icke-numeriska datatyper
Numeriska datatyper
Dessa typer används för att utföra matematiska operationer som Addition, Subtraction, etc. Exempel, procentberäkning, aktiekurs, avgifter, räkningar, ålder etc.
I VBA finns det 7 typer av numeriska datatyper som nämns nedan.
Numerisk datatyp | |
---|---|
7 | Decimal |
1 | Byte |
två | Heltal |
3 | Lång |
4 | Enda |
5 | Dubbel |
6 | Valuta |
Låt oss ta en kort titt på alla numeriska datatyper.
# 1) Byte-datatyp
Denna datatyp kräver bara en byte minne. Variabler med datatyp Byte kan lagra värden från 0 till 255. Standardbytevärdet är 0. Negativa värden och värden större än 255 är inte tillåtna. Om du försöker tilldela ogiltiga värden returneras ett överflödesfel.
Syntax: Dim Vname As Byte
Här är Vname ett variabelnamn och Byte är variabelns datatyp.
Exempel:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Resultatet ges nedan
# 2) Heltalsdatatyp
Dessa datatyper används för att lagra hela helvärdet. Detta upptar 2 byte minne. Ett heltal är en av de ofta använda datatyperna. De accepterar både positiva värden, negativa värden och noll också. De har ett intervall mellan -32 768 till 32 767.
Syntax: Dim tänds som heltal
Exempel:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Resultatet ges nedan
# 3) Lång datatyp
Detta är ett alternativ till en heltal datatyp som också lagrar ett helt helvärde. Det upptar dock mer minne än en heltalsvariabel som är 4 byte. Den har ett värdeintervall från -2,147,483,648 till 2,147,483,648
Syntax: Dim vnamn 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
Om du kör koden ovan med en heltalvariabel får du ett överflödsfel eftersom det finns 1048576 rader i Excel och heltal datatyp stöder bara till 32767. Som visas nedan när datatypen är lång visas ett lämpligt resultat.
Men när datatypen är ett heltal kastas ett överflödsfel.
# 4) Decimal datatyp
Detta är en exakt numerisk datatyp som används för dess precision. Det är det totala antalet siffror och antalet siffror till höger om decimalen som kallas en skalningsfaktor.
I VBA skalas antalet med en effekt på 10. Det är lämpligt att använda dessa typer medan man manipulerar stora nummer som behöver ett exakt värde. Detta upptar 14 byte i minnet.
Men variabler kan inte direkt deklareras som en decimaldatatyp. För att kunna använda Decimal måste du använda CDec-omvandlingsfunktionen. Du måste använda en datatyp för Variant.
Den här datatypen innehåller nedanstående värden.
+/- 792281662,514,264,337,593,543,950,335 utan decimal
+/- 7.9228162514264337593543950335 med 28 decimaler till höger om decimaltalet.
Det minsta icke-nollvärde som accepteras är +/- 0.0000000000000000000000000001.
Syntax: Dim antänds 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
Notera: TypeName-funktionen ger datatypnamnet
Produktion:
# 5) Enkel datatyp
Den här datatypen används för att lagra nummer med en-precision flytpunkt. Det upptar 4 byte minne. Standardvärdet är 0 och lagrar decimalvärden. Du kan använda utropstecknet (!) Medan du förklarar en variabel enligt syntaxen nedan.
Det accepterade intervallet av värden är:
3.402823E38 till -1.401298E-45 för negativa värden
1.401298E-45 till 3.402823E38 för positiva värden.
Syntax
Dim variabelnamn som singel
eller
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) Dubbel datatyp
Dubbel VBA-data kan användas för att hålla både heltal och bråk. Double används för att lagra nummer med flytande punkt med dubbel precision. Det upptar 8 byte minne och har ett antal värden.
-1,79769313486231E308 till -4,94065645841247E-324 för negativa värden
4.94065645841247E-324 till 1.79769313486232E308 för positiva värden
Liksom enkel datatyp kan dubbelt också deklareras med en symbol som är Hash (#) som visas nedan.
bästa mp3-nedladdaren för Windows 10
Syntax
Dim variabelnamn som dubbelt
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) Valutadatatyp
Denna datatyp kan ta upp till 8 byte lagringsstorlek. Denna typ av data ger exakt värde, till skillnad från enstaka och dubbla datatyper som vi redan diskuterat är rundade. Dessa är användbara för monetära beräkningar.
Valutatypen kan lagra både positiva och negativa värden. Dessa kan lagra 15 siffror till vänster om decimaltecken och fyra siffror till höger.
Tillåtet intervall är -922,337,203,685,477,5808 till 922,337,203,685,477,5807. Du kan använda @ för att deklarera valutadatatyper.
Syntax
Dimma variabelnamn 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
Produktion:
Notera :Om värdet på variabeln överstiger det angivna intervallet för en viss datatyp kastas ett överflödsfel.
Tänk på det enkla exemplet på byte-datatypen som överskrider dess intervall. Samma fel visas om du anger negativa värden för byte-datatypen.
Icke-numeriska datatyper
Det här är data som inte kan manipuleras av aritmetiska operatörer. De består av text, sträng, datum osv. Nedan anges de icke-numeriska datatyper som stöds i VBA.
Icke-numerisk datatyp | |
---|---|
7 | Variant (tecken) |
1 | Sträng (fast längd) |
två | Sträng (variabel längd) |
3 | Datum |
4 | Boolean |
5 | Objekt |
6 | Variant (siffror) |
# 1) Boolsk datatyp
Den här datatypen kräver 2 byte minne och kan endast lagra två värden, dvs. SANT eller FALSKT. Med andra ord kan den booleska variabeln bara få värde antingen SANT eller FALSK, alternativt 1 respektive 0. Standardvärdet för en boolesk variabel är False.
Syntax - Dim Vname As Boolean
Exempel:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Datumdatatyp
Denna datatyp används för att representera datum och tid. Det har datumintervallvärden från 1 januari 0100 till 31 december 9999 och tidsvärden från 0:00:00 till 23:59:59 och upptar 8 byte lagringsstorlek.
Syntax: Dim tänds som datum
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Notera: Nu-funktionen ger aktuellt datum och tid
typ av testning inom programvaruteknik
# 3) Strängdatatyp
Denna datatyp används för att lagra strängvärde. Strängen definieras som en sekvens av tecken. Så du kan använda strängdatatyp för att lagra text och kan användas för att lagra nummer, specialtecken, s och händelseutrymmen. Ett strängvärde ska bäddas in i ett dubbelt citattecken ''.
Det finns två typer av strängdatatyp.
# 1) Sträng med variabel längd: Denna typ upptar 10 byte lagringsstorlek plus det minne som krävs för strängen som är stränglängden. De har ett intervallvärde från 0 till cirka 2 miljarder.
# 2) Sträng med fast längd: Det upptar minnet lika med strängens längd. Den kan sträcka sig från 1 till cirka 65 400 tecken
Syntax: Dim Vname As String
Exempel:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Objektdatatyp
Objekt kommer att ha en hänvisning till ett objekt av vilken typ som helst, dvs. objektdatatyp kan peka på vilken datatyp som sträng, dubbel, heltal etc. Objektvariabeln innehåller inte värdet, det pekar bara på adressen där data är lagrat. Det upptar 4 byte datorminne. Standardvärdet för ett objekt är en nullreferens.
Syntax: Dim VName som objekt
Exempel:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Detta rensar alla använda celler i det aktuella arket.
# 5) Variantdatatyp
Detta är den universella datatypen för VBA, den kan acceptera alla typer av data numeriska och icke-numeriska. Variantdatatyp ger mer flexibilitet när du arbetar med data. Variantdatatyp använder mer lagringsstorlek än någon annan datatyp. Om du inte nämner en datatyp kommer VBA att behandla det som en variabelvariabel.
Det finns två typer av Variant-datatyper
# 1) Variant (siffror): Detta kan innehålla vilket numeriskt värde som helst upp till intervallet Double. Variantnumren upptar 16 byte lagringsstorlek.
# 2) Variant (tecken): Detta kan innehålla samma intervall som för sträng med variabel längd. Varianttecken upptar 22 byte + stränglängd (24 byte på 64-bitars system)
Syntax
Dim VName Som Variant
eller
Dim VName
Exempel:
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 datatyp
Ibland blir det nödvändigt att konvertera datatypen för en variabel till något specifikt i vårt användningsfall.
Exempel: Du hämtar ett värde från en cell, som vanligtvis är en sträng, och därför måste du konvertera det till en numerisk datatyp innan du utför någon aritmetisk operation. För att uppnå detta har VBA typkonverteringsfunktioner för alla datatyper som stöds.
# 1) CBool
Denna funktion används för att konvertera ett uttryck till en boolsk datatyp. Om uttrycket returnerar noll returnerar CBool Falskt, vilket som helst som inte är noll, CBool returnerar 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
Ovanstående kod ger resultat som False, True, False, True.
Du kan pröva själv, rita en ActiveX-kontrollkommandoknapp, högerklicka -> Visa kod och infoga ovanstående kod. Klicka på kommandoknappen så visas resultatet. (Inaktivera designläget)
Produktion
# 2) CByte
Denna funktion används för att konvertera ett uttryck till en Byte-datatyp. Kom ihåg efter konvertering om intervallet överstiger det tillåtna intervallet för Byte, då kastas ett överflödesfel.
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
Notera: Om du anger värdet 255,56. Complier returnerar ett överflödsfel
# 3) CCur
Denna funktion konverterar ett uttryck till en valutatyp.
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
Denna funktion konverterar en sträng till ett datum. Antag att du hämtar datumvärdet som en sträng från en excel-cell, då måste du konvertera det innan du utför ytterligare åtgärder. Du kan använda 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 används för att konvertera ett uttryck till en dubbel datatyp.
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
Denna funktion konverterar ett numeriskt värde till 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) Int
CInt-funktionen konverterar ett värde till en heltaldatatyp.
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
Denna funktion används för att konvertera ett värde till en lång datatyp
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
Denna funktion konverterar ett värde till en enda datatyp
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
Denna funktion används för att konvertera ett numeriskt värde till en strängdatatyp.
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
Denna funktion konverterar ett uttryck till en datatyp för 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
Vanliga frågor
F # 1) Vilken är standarddatatypen i VBA?
Svar: Varianten är standard. Om du inte definierar en datatyp för en variabel behandlar VBA den som en variantvariabel / objekt.
F # 2) Vad är ett typfel?
Svar: Det här felet utlöses när du förklarar en variabel som en datatyp och tilldelar ett olämpligt värde.
Exempel: Förklara en variabel som heltal och ange ett textvärde.
F # 3) Hur fixar jag ett överflödesfel?
Svar: Du måste referera till det intervall som specifikt datatyp är tillåtet och se till att du anger ett värde inom det tillåtna intervallet.
Exempel: Byte tillåter endast 0 till 255, om du anger något negativt värde eller v-värde mer än 255, stöter du på ett överflödsfel.
Slutsats
I denna handledning har vi lärt oss om VBA-datatyper, dvs 7 numeriska och 7 icke-numeriska datatyper. Vi diskuterade också hur man konverterar en datatyp från en typ till en annan med exempel.
=> Kolla här för att se A-Z av VBA-utbildningar
Rekommenderad läsning
- Excel VBA-handledning - Introduktion till VBA i Excel
- C ++ datatyper
- Python-datatyper
- C # Datatyper och variabler med exempel
- C # Type Casting: Explicit & Implicit Data Conversion With Exempel
- Array Data Typer - int Array, Double array, Array of Strings Etc.
- MySQL-datatyper | Vad är olika datatyper i MySQL