VBA Long

Vad är en lång datatyp i VBA?

Lång är en datatyp i VBA som används för att lagra de numeriska värdena, vi vet att heltal också innehåller numeriska värden men Lång skiljer sig från heltal eftersom räckvidden för lagring av data är mycket stort vid lång datatyp också i lång datatyp kan vi hålla decimalvärden också, detta är en inbyggd datatyp.

”Långt” som namnet säger, bör det hålla värdet på något stort. ”Lång” är en numerisk datatyp i VBA Excel.

Den långa datatypen i Excel VBA kan innehålla värdena från 0 till 2, 147, 483, 647 för positiva siffror, och för det negativa antalet kan den innehålla från 0 till -2, 147, 483, 648.

VBA lång datatyp kräver 4 byte minneslagring på din dator, det här är det variabla minnet med dubbelt heltal (2 byte) och hälften av det dubbla datatypens variabla minne (8 byte)

Jag har aldrig sett ett scenario där jag vill utnyttja gränsen för en VBA Long-datatyp till fullo under min korta karriär. Men jag kommer att visa dig några av exemplen för att förstå det bättre.

Exempel på VBA Long Data Type

Nedan visas exempel på excel VBA Long-datatyp.

Du kan ladda ner den här VBA Long Data Type Excel-mallen här - VBA Long Data Type Excel-mall

VBA långt exempel # 1

Så snart du förklarar den variabla datatypen som “Lång” kan du tilldela värdena från -2, 147, 483, 648 till 2, 147, 483, 648.

Till exempel förklara variabeln som lång datatyp.

Koda:

 Sub Long_Example1 () Dim k As Long End Sub 

Låt oss tilldela värdet som ett totalt antal rader i kalkylbladet.

För att få totalt antal rader i Excel-kalkylarkoden är ”Rader. Räkna"

Koda:

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

Visa nu värdet i meddelandefältet.

Koda:

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

Kör den här koden och se vad antalet rader räknas i kalkylbladet.

Det står att vi har mer än 1 miljon rader i kalkylbladet.

Nu för bättre förståelse kommer jag att ändra datatypen från LONG till INTEGER.

Koda:

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

Om jag kör VBA-koden får jag felmeddelandet "Overflow".

Anledningen till att vi fick det här felet i VBA eftersom datatypen ”Heltal” bara kan innehålla värdena från -31768 till 32767. I det här fallet “Rader. Räkna ”returnerar talet som är mer än gränsen för variabeln” heltal ”.

Att tilldela värdet på över 1 miljon till variabeln som bara kan innehålla 32767 orsakar överflödsfelet här.

VBA långt exempel # 2

Hitta den sista raden med långvariabel

Att hitta den senast använda raden i kalkylbladet är den viktigaste av kodningen. För att hitta den senast använda raden i kalkylbladet krävs att variabeln deklareras. Medan deklarera variabeln och tilldela en datatyp krävs en del sunt förnuft.

Antag att du har data slutar på 25000 rader som visas i bilden nedan.

Nu vet jag att det senast använda radnumret är 25000, för det här behöver vi inte "LONG" -datatypen eftersom "INTEGER" -datatypen kan ge mig den sista raden.

Titta på koden nedan för din information.

Koda:

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

Om jag kör den här koden får jag det senast använda radnumret på kalkylbladet jag arbetar med just nu.

Som kodare är det viktigt att veta storleken på den data du kommer att ha i framtiden. För tillfället kan data sluta vid 25000: e raden men om data ökar utöver "Integer" -gränsen, dvs. 32767, orsakar det ett överflödsfel.

Till exempel kommer jag att öka data till 32768: e rader.

Om jag nu kör samma kod igen får jag inte värdet utan jag får felet enligt nedan.

Kom ihåg att jag har ökat gränsen med bara 1 bortom gränsen för "Integer" -värdet, så jag fick ett överflödesfel.

Så det är viktigt att veta storleken på dina data innan du tilldelar variabeln en datatyp. Det är alltid ett bättre alternativ att förklara variabeln som “LÅNG” utan att tänka på din datastorlek i framtiden.

Alternativ till Excel VBA Long Variable

Du måste redan tänka på om vi vill hålla värdet mer än gränsen för en lång variabel. För detta måste vi använda olika datatyper, dvs antingen VBA “String” eller “Variant”

Kom ihåg det ögonblick det korsar siffran 2147483647 får vi överflödesfel i VBA med LONG datatyp. För att lagra mer än detta nummer måste vi använda datatypen "Sträng" eller "Variant".

För sträng

Koda:

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

För Variant

Koda:

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

När vi kör ovanstående koder visar det nämnda numret.