VBA Long (eksempel) | Trinnvis guide til lang datatype i Excel VBA

Hva er en lang datatype i VBA?

Lang er en datatype i VBA som brukes til å lagre de numeriske verdiene, vi vet at heltall også har numeriske verdier, men Lang er forskjellig fra heltall da rekkevidden for lagring av data er veldig stort i tilfelle lang datatype også i lang datatype vi også kan ha desimalverdier, dette er en innebygd datatype.

“Langt” som navnet sier, bør det ha verdien av noe stort. “Lang” er en numerisk datatype i VBA Excel.

Den lange datatypen i Excel VBA kan holde verdiene fra 0 til 2, 147, 483, 647 for positive tall, og for det negative tallet kan den holde fra 0 til -2, 147, 483, 648.

VBA Long datatype krever 4 byte minnelagring på datamaskinen din, dette er det dobbelte heltall datatypen variabelt minne (2 byte) og halvparten av det dobbelte datatypen variabelt minne (8 byte)

Jeg har aldri sett et scenario der jeg vil utnytte grensen for en VBA Long-datatype fullt ut i løpet av min korte karriere. Men jeg vil vise deg noen av eksemplene for å forstå det bedre.

Eksempler på VBA Long Data Type

Nedenfor er eksemplene på excel VBA Long datatype.

Du kan laste ned denne VBA Long Data Type Excel-malen her - VBA Long Data Type Excel Template

VBA Long Eksempel # 1

Så snart du erklærer den variable datatypen som “Lang”, kan du tilordne verdiene fra -2, 147, 483, 648 til 2, 147, 483, 648.

Forklar f.eks. Variabelen som lang datatype.

Kode:

 Sub Long_Example1 () Dim k As Long End Sub 

La oss tilordne verdien som et totalt antall rader på regnearket.

For å få totalt antall rader i Excel-regnearkkoden er "Rader. Telle"

Kode:

 Sub Long_Example1 () Dim k As Long k = Rows.Count End Sub 

Vis nå verdien i meldingsboksen.

Kode:

 Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k End Sub 

Kjør denne koden og se hva antall rader teller i regnearket.

Det står at vi har mer enn 1 million rader i regnearket.

Nå for bedre forståelse, vil jeg endre datatypen fra LANG til INTEGER.

Kode:

 Sub Long_Example1 () Dim k As Integer k = Rows.Count MsgBox k End Sub 

Hvis jeg kjører VBA-koden, får jeg feilmeldingen som "Overflow".

Årsaken til at vi fikk denne feilen i VBA fordi datatypen "Heltall" bare kan holde verdiene fra -31768 til 32767. I dette tilfellet “Rader. Count "vil returnere tallet som er mer enn grensen for" heltall "-variabelen.

Å tilordne verdien på over 1 million til variabelen som bare kan inneholde 32767 forårsaker overflytfeilen her.

VBA Long Eksempel # 2

Finn den siste raden med langvariabel

Å finne den sist brukte raden i regnearket er den viktigste kodingen. For at du skal finne den sist brukte raden i regnearket, må variabelen deklareres. Mens det å erklære variabelen og tilordne en datatype, krever det noen sunn fornuft.

Anta at du har data som ender på 25000 rader som vist i bildet nedenfor.

Nå vet jeg at sist brukte radnummer er 25000, for dette trenger vi ikke "LANG" datatype fordi "INTEGER" datatypen kan gi meg den siste raden.

Se på koden nedenfor for din informasjon.

Kode:

 Sub Long_Example1 () Dim k As Integer k = Cells (Rows.Count, 1). End (xlUp). Row MsgBox k End Sub 

Hvis jeg kjører denne koden, får jeg det siste brukte radnummeret på regnearket jeg jobber med for øyeblikket.

Som koder er det viktig å vite størrelsen på dataene du vil ha i fremtiden. Fordi data for øyeblikket kan slutte på 25000. rad, men hvis dataene øker utover "Integer" -grensen, dvs. 32767, forårsaker det en overflytningsfeil.

For eksempel vil jeg øke dataene til 32768. rad.

Nå hvis jeg kjører den samme koden igjen, vil jeg ikke få verdien, heller vil jeg få feilen som nedenfor.

Husk at jeg har økt grensen med bare 1 utover grensen for "Integer" -verdien, så jeg fikk en Overflow-feil.

Så det er viktig å vite størrelsen på dataene dine før du tilordner en datatype til variabelen. Det er alltid et bedre alternativ å erklære variabelen som "LANG" uten å tenke på datastørrelsen i fremtiden.

Alternativer til Excel VBA Long Variable

Du må allerede tenke på hva om vi ønsker å holde verdien mer enn grensen for en lang variabel. For dette må vi bruke forskjellige datatyper, dvs. enten VBA “String” eller “Variant”

Husk øyeblikket det krysser nummeret 2147483647, vil vi få overflowfeil i VBA med LONG datatype. For å lagre mer enn dette nummeret, må vi bruke datatypen "String" eller "Variant".

For String

Kode:

 Sub Long_Example2 () Dim k As String k = 2147483648 MsgBox k End Sub 

For Variant

Kode:

 Sub Long_Example2 () Dim k As Variant k = 2147483648 MsgBox k End Sub 

Når vi kjører ovennevnte koder, vil det vise det nevnte nummeret.