VBA lang gegevenstype (dimvariabel)

Lang variabel type

de VBA Lang gegevenstype wordt gebruikt om zeer lange gegevenswaarden op te slaan (-2.147.483.648 tot 2.147.483.648). Het kan alleen hele getallen opslaan (zonder decimalen).

Om een ​​lange variabele te declareren, gebruik je de Dim Statement (afkorting van Dimension):

1 Dim lngA zo lang

Om vervolgens een waarde aan een variabele toe te kennen, gebruikt u eenvoudig het gelijkteken:

1 lngA = 30000

Dit in een procedure zetten ziet er als volgt uit:

12345678 Sub lngVoorbeeld()'declareer de lange variabele'Dim lngA zo lang'vul de lange variabele in'lngA = 30000'toon het berichtvenster'MsgBox lngAEinde sub

Als u de bovenstaande code uitvoert, wordt het volgende berichtvenster weergegeven.

Gegevenstype LangLang

Het gegevenstype LongLong is alleen beschikbaar in de 64-bits versie van Microsoft Office. Als u een 32-bits versie van Office op een 64-bits computer gebruikt, is dit gegevenstype niet beschikbaar. Het ondersteunt nummers in het bereik van -9.223.372.036.854.775.808 tot 9.223.372.036.854.775.807.

1 Dim lngA zo langLang

LongPtr-gegevenstype

De LongPtr is geïntroduceerd in VBA om de 64-bits versie van Microsoft Office te ondersteunen. Op een 32-bits systeem wordt het behandeld als een Long en op 64-bits systemen wordt het behandeld als een LongLong.

1 Dim lngA als LongPtr

Opmerking: LongPtr is niet beschikbaar in Excel 2007 of eerder.

Decimale waarden en lange gegevenstypen

Lange variabelen kunnen geen decimale waarden opslaan. Als u een decimaal getal lang doorgeeft, wordt het decimale getal afgerond om het decimaalteken te verwijderen.

Daarom, als u de onderstaande procedure zou uitvoeren:

12345678 Sub LngVoorbeeldB()'declareer de lange variabele'Dim lngA zo lang'vul de lange variabele in'lngA = 3524,12'toon het berichtvenster'MsgBox lngAEinde sub

De decimale waarde wordt naar beneden afgerond, waardoor het volgende bericht wordt geretourneerd:

Echter, deze code hieronder:

12345678 Sub LngVoorbeeldB()'declareer de lange variabele'Dim lngA zo lang'vul de lange variabele in'lngA = 3524,12'toon het berichtvenster'MsgBox lngAEinde sub

Zou het volgende berichtvenster retourneren (afgerond naar boven):

Decimaal/dubbel gegevenstype

Als u een decimale plaats wilt opslaan, moet u een variabele declareren die decimalen toestaat. Er zijn 3 gegevenstypen die u kunt gebruiken: enkel, dubbel of valuta.

1 Dim sngPrijs als Single
1 Dim dblPrijs als dubbel
1 Dim curPrice als valuta

Het gegevenstype Enkelvoudig zal de komma iets anders afronden dan het gegevenstype dubbel en valuta, dus het verdient de voorkeur om dubbel naar enkelvoudig te gebruiken voor nauwkeurigheid. Een Double kan maximaal 12 decimalen hebben, terwijl Currency en Single beide maximaal 4 decimalen kunnen hebben.

Lange variabele declareren op module- of globaal niveau

In de vorige voorbeelden hebben we de variabele Long binnen een procedure gedeclareerd. Variabelen gedeclareerd met een procedure kunnen alleen binnen die procedure worden gebruikt.

In plaats daarvan kunt u lange variabelen declareren op module- of globaal niveau.

Moduleniveau

Moduleniveau variabelen worden bovenaan codemodules gedeclareerd met de dim uitspraak.

Deze variabelen kunnen bij elke procedure in die codemodule worden gebruikt.

Globaal niveau

Globaal niveau variabelen worden ook gedeclareerd bovenaan codemodules. Echter, in plaats van de dim verklaring, gebruik de Openbaar statement om aan te geven dat de lange variabele beschikbaar is voor gebruik in uw VBA-project.

1 Openbare lngA zo lang

Als u de lange variabele op moduleniveau zou declareren en deze vervolgens in een andere module zou proberen te gebruiken, zou er een fout optreden.

Als u echter het trefwoord Public had gebruikt om de lange variabele te declareren, zou de fout niet optreden en zou de procedure perfect verlopen.

Formaat lang opgeslagen als string

Er kan een moment zijn waarop u een lang gegevenstype wilt opmaken in een tekenreeks - bijvoorbeeld een datum of u wilt misschien een valutasymbool weergeven.

Hiervoor gebruik je de functie Opmaak.

De volgende werkwijze:

1234567891011 SubtestLongToString()'declareer de stringvariabele'Dim strDate als string'declareer de lange en vul de waarde in'Dim lngDatum zo langlngDatum = 44055'converteer de lange naar een tekenreeks die is opgemaakt als een datum'strDatum = Formaat(lngDatum, "dd mmmm jjjj")'bekijk het resultaat'Debug.Print strDateEinde sub

zou het onderstaande resultaat retourneren:

en de volgende procedure:

1234567891011 SubtestLongtoCurrencyString()'declareer de stringvariabele'Dim strGeld als string'declareer de lange en vul de waarde in'Dim lngWaarde zo langlngWaarde = 44055'converteer de lange naar een string met een valutasymbool'strMoney = Format(lngValue, "$#,##0")'bekijk het resultaat'MsgBox strGeldEinde sub

zou dit resultaat retourneren:

wave wave wave wave wave