Lang variabel type
VBA Lang datatype brukes til å lagre svært lange dataverdier (-2 147 483 648 til 2 147 483 648). Den kan bare lagre hele tall (uten desimaler).
For å deklarere en lang variabel bruker du Dim Statement (forkortelse for Dimension):
1 | Dim lngA som lang |
For deretter å tilordne en verdi til en variabel, bare bruk likhetstegnet:
1 | lngA = 30000 |
Å sette dette inn i en prosedyre ser slik ut:
12345678 | Sub lngExample ()'erklærer den lange variabelenDim lngA som lang'fyll ut den lange variabelenlngA = 30000'vis meldingsboksenMsgBox lngASlutt Sub |
Hvis du kjører koden ovenfor, vises følgende meldingsboks.
Lang lang datatype
LongLong -datatypen er bare tilgjengelig i 64 -biters versjon av Microsoft Office. Hvis du kjører en 32 -biters versjon av Office på en 64 -biters maskin, vil denne datatypen ikke være tilgjengelig. Den støtter tall i området -9,223,372,036,854,775,808 til 9,223,372,036,854,775,807.
1 | Dim lngA som LongLong |
LongPtr -datatype
LongPtr ble introdusert i VBA for å støtte 64 -biters versjon av Microsoft Office. På et 32 -biters system blir det behandlet som en Long og på 64 -bits systemer blir det behandlet som en LongLong.
1 | Dim lngA som LongPtr |
Merk: LongPtr er ikke tilgjengelig i Excel 2007 eller tidligere.
Desimalverdier og lange datatyper
Lange variabler kan ikke lagre desimalverdier. Hvis du passerer et desimaltall en lang, blir desimaltallet avrundet for å fjerne desimalet.
Derfor, hvis du skulle kjøre prosedyren nedenfor:
12345678 | Sub LngExampleB ()'erklærer den lange variabelenDim lngA som lang'fyll ut den lange variabelenlngA = 3524,12'vis meldingsboksenMsgBox lngASlutt Sub |
Desimalverdien vil bli avrundet ned, og følgende melding returneres:
Denne koden nedenfor:
12345678 | Sub LngExampleB ()'erklærer den lange variabelenDim lngA som lang'fyll ut den lange variabelenlngA = 3524,12'vis meldingsboksenMsgBox lngASlutt Sub |
Ville returnere følgende meldingsboks (avrunding):
Desimal / dobbel datatype
Hvis du vil lagre en desimal, må du deklarere en variabel som tillater desimaler. Det er 3 datatyper du kan bruke - enkelt, dobbelt eller valuta.
1 | Dim sngPris som singel |
1 | Dim dblPris som dobbel |
1 | Dim curPris som valuta |
Enkelt datatypen vil avrunde desimaltegnet litt annerledes enn dobbelt- og valutatypen, så det er å foretrekke å bruke dobbelt til enkelt for nøyaktighet. En dobbel kan ha opptil 12 desimaler, mens valuta og enkelt kan ha opptil fire desimaler.
Erklær lang variabel på modul eller globalt nivå
I de foregående eksemplene har vi deklarert Long -variabelen innenfor en prosedyre. Variabler deklarert med en prosedyre kan bare brukes innenfor denne prosedyren.
I stedet kan du deklarere lange variabler på modul- eller globalt nivå.
Modulenivå
Modulenivå variabler deklareres øverst i kodemodulene med Dim uttalelse.
Disse variablene kan brukes med alle prosedyrer i den kodemodulen.
Globalt nivå
Globalt nivå variabler deklareres også øverst i kodemodulene. Imidlertid, i stedet for å bruke Dim uttalelse, bruk Offentlig uttalelse for å indikere at den lange variabelen er tilgjengelig for bruk i hele ditt VBA -prosjekt.
1 | Offentlig lngA som lang |
Hvis du skulle deklarere den lange variabelen på modulnivå og deretter prøve å bruke den i en annen modul, ville det oppstå en feil.
Men hvis du hadde brukt det offentlige søkeordet for å deklarere den lange variabelen, ville feilen ikke oppstå og prosedyren ville kjøre perfekt.
Format Lang lagret som streng
Det kan være et tidspunkt hvor du ønsker å formatere en lang datatype til en streng - for eksempel en dato, eller du vil kanskje vise et valutasymbol.
For å oppnå dette, bruker du Format -funksjonen.
Følgende prosedyre:
1234567891011 | Sub TestLongToString ()'erklærer strengvariabelenDim strDate as string'erklær det lange og fyll ut verdienDim lngDato så lengelngDate = 44055'konverter lang til en streng formatert som en datostrDate = Format (lngDate, "dd mmmm åååå")'se resultatetDebug.Print strDateSlutt Sub |
ville returnere resultatet nedenfor:
og følgende prosedyre
1234567891011 | Sub TestLongtoCurrencyString ()'erklærer strengvariabelenDim strPenger som streng'erklær det lange og fyll ut verdienDim lngValue As LonglngValue = 44055'konverter langen til en streng med et valutasymbolstrMoney = Format (lngValue, "$#, ## 0")'se resultatetMsgBox strPengerSlutt Sub |
vil returnere dette resultatet: