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: