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: