VBA lång datatyp (dim variabel)

Lång variabel typ

VBA Lång datatyp används för att lagra mycket långa datavärden (-2 147 483 648 till 2 147 483 648). Det kan bara lagra hela tal (utan decimaler).

För att deklarera en lång variabel använder du Dim Statement (kort för Dimension):

1 Dim lngA som lång

För att sedan tilldela ett värde till en variabel, använd helt enkelt likhetstecknet:

1 lngA = 30000

Att sätta in detta i ett förfarande ser ut så här:

12345678 Sub lngExempel ()'deklarera den långa variabelnDim lngA som lång'fylla i den långa variabelnlngA = 30000'visa meddelanderutanMsgBox lngAAvsluta Sub

Om du kör koden ovan visas följande meddelanderuta.

Lång lång datatyp

Datatypen LongLong är endast tillgänglig i 64 -bitarsversionen av Microsoft Office. Om du kör en 32 -bitarsversion av Office på en 64 -bitarsmaskin är denna datatyp inte tillgänglig. Den stöder siffror i intervallet -9,223,372,036,854,775,808 till 9,223,372,036,854,775,807.

1 Dim lngA som LongLong

LongPtr -datatyp

LongPtr introducerades i VBA för att stödja 64 -bitarsversionen av Microsoft Office. På ett 32 bitars system behandlas det som en Long och på 64 bitars system behandlas det som en LongLong.

1 Dim lngA som LongPtr

Obs! LongPtr är inte tillgängligt i Excel 2007 eller tidigare.

Decimalvärden och långa datatyper

Långa variabler kan inte lagra decimalvärden. Om du passerar ett decimaltal ett långt, avrundas decimaltalet för att ta bort decimalen.

Om du skulle köra proceduren nedan:

12345678 Sub LngExampleB ()'deklarera den långa variabelnDim lngA som lång'fylla i den långa variabelnlngA = 3524,12'visa meddelanderutanMsgBox lngAAvsluta Sub

Decimalvärdet skulle avrundas nedåt och följande meddelande returneras:

Denna kod nedan:

12345678 Sub LngExampleB ()'deklarera den långa variabelnDim lngA som lång'fylla i den långa variabelnlngA = 3524,12'visa meddelanderutanMsgBox lngAAvsluta Sub

Skulle returnera följande meddelanderuta (avrundning uppåt):

Decimal / dubbel datatyp

Om du vill lagra en decimal måste du deklarera en variabel som tillåter decimaler. Det finns tre datatyper som du kan använda - singel, dubbel eller valuta.

1 Dim sngPris som singel
1 Dim dblPris som dubbel
1 Dim curPris som valuta

Den enskilda datatypen avrundar decimalpunkten något annorlunda än dubbel- och valutatypen, så det är att föredra att använda dubbel till enkel för noggrannhet. En dubbel kan ha upp till 12 decimaler medan valuta och singel båda kan ha upp till 4 decimaler.

Deklarera lång variabel på modul eller global nivå

I de tidigare exemplen har vi deklarerat den långa variabeln inom ett förfarande. Variabler som deklareras med ett förfarande kan endast användas inom det förfarandet.

Istället kan du deklarera Långa variabler på modul- eller global nivå.

Modulenivå

Modulenivå variabler deklareras högst upp i kodmodulerna med Dämpa påstående.

Dessa variabler kan användas med alla procedurer i den kodmodulen.

Global nivå

Global nivå variabler deklareras också högst upp i kodmodulerna. Men istället för att använda Dämpa uttalande, använd offentlig uttalande för att indikera att den långa variabeln är tillgänglig för användning under hela ditt VBA -projekt.

1 Offentlig lngA som lång

Om du skulle deklarera den långa variabeln på en modulnivå och sedan försöka använda den i en annan modul skulle ett fel uppstå.

Men om du hade använt det offentliga nyckelordet för att deklarera den långa variabeln, skulle felet inte uppstå och proceduren skulle fungera perfekt.

Format lång lagrad som sträng

Det kan finnas en tid då du vill formatera en lång datatyp till en sträng - till exempel ett datum eller du kanske vill visa en valutasymbol.

För att uppnå detta använder du funktionen Format.

Följande procedur:

1234567891011 Sub TestLongToString ()'deklarera strängvariabelnDim strDate som sträng'förklara det långa och fylla i värdetDim lngDate as longlngDate = 44055'konvertera den långa till en sträng formaterad som ett datumstrDate = Format (lngDate, "dd mmmm åååå")'se resultatetDebug.Print strDateAvsluta Sub

skulle returnera resultatet nedan:

och följande procedur

1234567891011 Sub TestLongtoCurrencyString ()'deklarera strängvariabelnDim strPengar som sträng'förklara det långa och fylla i värdetDim lngValue As LonglngValue = 44055'konvertera den långa till en sträng med en valutasymbolstrMoney = Format (lngValue, "$#, ## 0")'se resultatetMsgBox strPengarAvsluta Sub

skulle returnera detta resultat:

wave wave wave wave wave