Hvad er en lang datatype i VBA?
Lang er en datatype i VBA, der bruges til at gemme de numeriske værdier, vi ved, at heltal også indeholder numeriske værdier, men Lang er forskellig fra heltal, da rækkevidden til lagring af data er meget stor i tilfælde af lang datatype også i lang tid datatype vi også kan holde decimalværdier, dette er en indbygget datatype.
”Langt” som navnet siger, skal det indeholde værdien af noget stort. “Lang” er en numerisk datatype i VBA Excel.
Den lange datatype i Excel VBA kan indeholde værdierne fra 0 til 2, 147, 483, 647 for positive tal, og for det negative tal kan den holde fra 0 til -2, 147, 483, 648.
VBA lang datatype kræver 4 byte lagerhukommelse på din computer, dette er den dobbelte heltal datatype variabel hukommelse (2 byte) og halvdelen af den dobbelte datatype variable hukommelse (8 byte)
Jeg har aldrig set et scenario, hvor jeg fuldt ud vil udnytte grænsen for en VBA Long-datatype i min korte karriere. Men jeg vil vise dig nogle af eksemplerne for at forstå det bedre.
Eksempler på VBA lang datatype
Nedenfor er eksempler på excel VBA Long datatype.
Du kan downloade denne Excel-skabelon med VBA-lang datatype her - VBA-skabelon med lang datatype-Excel
VBA langt eksempel # 1
Så snart du erklærer den variable datatype som “Lang”, kan du tildele værdierne fra -2, 147, 483, 648 til 2, 147, 483, 648.
Forklar f.eks. Variablen som lang datatype.
Kode:
Sub Long_Example1 () Dim k As Long End Sub
Lad os tildele værdien som et samlet antal rækker på regnearket.
For at få det samlede antal rækker i Excel-regnearkkoden er “Rækker. Tælle"
Kode:
Sub Long_Example1 () Dim k As Long k = Rows.Count End Sub
Vis nu værdien i meddelelsesfeltet.
Kode:
Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k End Sub
Kør denne kode og se, hvad de samlede rækker tæller i regnearket.
Det siger, at vi har mere end 1 million rækker i regnearket.
Nu for bedre forståelse vil jeg ændre datatypen fra LANG til INTEGER.
Kode:
Sub Long_Example1 () Dim k as Integer k = Rows.Count MsgBox k End Sub
Hvis jeg kører VBA-koden, får jeg fejlmeddelelsen "Overflow".
Årsagen til, at vi fik denne fejl i VBA, fordi datatypen "Heltal" kun kan holde værdierne fra -31768 til 32767. I dette tilfælde “Rækker. Count ”returnerer det tal, der er mere end grænsen for variablen“ heltal ”.
Tildeling af værdien på over 1 million til variablen, der kun kan rumme 32767, forårsager overløbsfejl her.
VBA langt eksempel # 2
Find den sidste række ved hjælp af lang variabel
At finde den sidst anvendte række på regnearket er den vigtigste af kodningen. For at finde den sidst anvendte række på regnearket kræves, at der erklæres variabel. Mens det at erklære variablen og tildele en datatype kræver en vis sund fornuft.
Antag at du har data ender på 25.000 rækker som vist i nedenstående billede.
Nu ved jeg, at det sidst anvendte række nummer er 25000, til dette behøver vi ikke "LANG" datatypen, fordi "INTEGER" datatypen kan give mig den sidste række.
Se nedenstående kode for dine oplysninger.
Kode:
Sub Long_Example1 () Dim k As Integer k = Cells (Rows.Count, 1). End (xlUp). Row MsgBox k End Sub
Hvis jeg kører denne kode, får jeg det sidst anvendte række nummer på det regneark, jeg arbejder på i øjeblikket.
Som koder er det vigtigt at kende størrelsen på de data, du har i fremtiden. Fordi data i øjeblikket muligvis slutter ved 25.000. række, men hvis dataene stiger ud over "Integer" -grænsen, dvs. 32767, forårsager det en overløbsfejl.
For eksempel vil jeg øge dataene til 32768. rækker.
Hvis jeg nu kører den samme kode igen, får jeg ikke værdien, men jeg får fejlen som nedenfor.
Husk, at jeg har øget grænsen med kun 1 ud over grænsen for "Integer" -værdien, så jeg fik en Overflow-fejl.
Så det er vigtigt at kende størrelsen på dine data, før du tildeler variablen en datatype. Det er altid en bedre mulighed at erklære variablen som "LANG" uden at tænke på din datastørrelse i fremtiden.
Alternativer til Excel VBA lang variabel
Du skal allerede tænke over, hvad hvis vi vil holde værdien mere end grænsen for en lang variabel. Til dette er vi nødt til at bruge forskellige datatyper, dvs. enten VBA “String” eller “Variant”
Husk det øjeblik det krydser nummeret 2147483647, får vi overløbsfejl i VBA med LONG datatype. For at gemme mere end dette nummer skal vi bruge datatypen "String" eller "Variant".
Til streng
Kode:
Sub Long_Example2 () Dim k As String k = 2147483648 MsgBox k End Sub
Til variant
Kode:
Sub Long_Example2 () Dim k As Variant k = 2147483648 MsgBox k End Sub
Når vi kører ovenstående koder, viser det det nævnte nummer.