VBA lang datatype (dim variabel)

Lang variabel type

VBA Lang datatype bruges til at gemme meget lange dataværdier (-2.147.483.648 til 2.147.483.648). Det kan kun gemme hele tal (uden decimaler).

For at erklære en lang variabel bruger du Dim Statement (forkortelse for Dimension):

1 Dim lngA som lang

For derefter at tildele en værdi til en variabel skal du blot bruge lighedstegnet:

1 lngA = 30000

At sætte dette i en procedure ser sådan ud:

12345678 Sub lngExample ()'erklærer den lange variabelDim lngA som lang'udfyld den lange variabellngA = 30000'vis meddelelsesboksenMsgBox lngAAfslut Sub

Hvis du kører koden ovenfor, vises følgende meddelelsesboks.

Lang lang datatype

LongLong -datatypen er kun tilgængelig i 64 bit -versionen af ​​Microsoft Office. Hvis du kører en 32 bit version af Office på en 64 bit maskine, er denne datatype ikke tilgængelig. Det understøtter tal i intervallet -9.223.372.036.854.775.808 til 9.223.372.036.854.775.807.

1 Dim lngA som LongLong

LongPtr -datatype

LongPtr blev introduceret i VBA for at understøtte 64 -bit versionen af ​​Microsoft Office. På et 32 ​​bit system behandles det som en Long og på 64 bit systemer behandles det som en LongLong.

1 Dim lngA som LongPtr

Bemærk: LongPtr er ikke tilgængelig i Excel 2007 eller tidligere.

Decimalværdier og lange datatyper

Lange variabler kan ikke gemme decimalværdier. Hvis du passerer et decimaltal a long, afrundes decimaltallet for at fjerne decimalet.

Hvis du skulle køre nedenstående procedure:

12345678 Sub LngExampleB ()'erklærer den lange variabelDim lngA som lang'udfyld den lange variabellngA = 3524,12'vis meddelelsesboksenMsgBox lngAAfslut Sub

Decimalværdien vil blive afrundet nedad og returnere følgende meddelelse:

Denne kode nedenfor:

12345678 Sub LngExampleB ()'erklærer den lange variabelDim lngA som lang'udfyld den lange variabellngA = 3524,12'vis meddelelsesboksenMsgBox lngAAfslut Sub

Ville returnere følgende meddelelsesboks (afrunding):

Decimal / dobbelt datatype

Hvis du vil gemme en decimal, skal du deklarere en variabel, der giver mulighed for decimaler. Der er 3 datatyper, du kan bruge - Single, Double eller Currency.

1 Dim sngPris som single
1 Dim dblPris som dobbelt
1 Dim curPris som valuta

Enkelt datatypen vil afrunde decimaltegnet lidt anderledes end dobbelt- og valutatypen, så det er at foretrække at bruge dobbelt til enkelt for nøjagtighed. En dobbelt kan have op til 12 decimaler, mens valuta og enkelt kan begge have op til 4 decimaler.

Erklær lang variabel på modul eller globalt niveau

I de foregående eksempler har vi erklæret den lange variabel inden for en procedure. Variabler, der er angivet med en procedure, kan kun bruges inden for denne procedure.

I stedet kan du erklære lange variabler på modulet eller globalt niveau.

Modulniveau

Modulniveau variabler erklæres øverst i kodemodulerne med Svag udmelding.

Disse variabler kan bruges med enhver procedure i det pågældende kodemodul.

Globalt niveau

Globalt niveau variabler erklæres også øverst i kodemodulerne. Men i stedet for at bruge Svag erklæring, brug Offentlig erklæring for at angive, at den lange variabel er tilgængelig til brug i hele dit VBA -projekt.

1 Offentlig lngA som lang

Hvis du skulle erklære den lange variabel på et modulniveau og derefter prøve at bruge den i et andet modul, ville der opstå en fejl.

Men hvis du havde brugt det offentlige søgeord til at deklarere den lange variabel, ville fejlen ikke opstå, og proceduren ville køre perfekt.

Format Lang lagret som streng

Der kan være et tidspunkt, hvor du ønsker at formatere en lang datatype til en streng - f.eks. En dato, eller du vil måske vise et valutasymbol.

For at opnå dette bruger du formateringsfunktionen.

Følgende procedure:

1234567891011 Sub TestLongToString ()'erklærer strengvariablenDim strDate som streng'erklær den lange og udfyld værdienDim lngDate as longlngDate = 44055'konverter den lange til en streng formateret som en datostrDate = Format (lngDate, "dd mmmm åååå")'se resultatetDebug.Print strDateAfslut Sub

ville returnere resultatet herunder:

og følgende procedure

1234567891011 Sub TestLongtoCurrencyString ()'erklærer strengvariablenDim strPenge som streng'erklær den lange og udfyld værdienDim lngVærdi så længelngValue = 44055'konverter langen til en streng med et valutasymbolstrMoney = Format (lngValue, "$#, ## 0")'se resultatetMsgBox strPengeAfslut Sub

ville returnere dette resultat:

wave wave wave wave wave