Vrsta dolge spremenljivke
VBA dolga podatkovni tip se uporablja za shranjevanje zelo dolgih podatkovnih vrednosti (-2,147,483,648 do 2,147,483,648). Shrani lahko samo cela števila (brez decimalnih mest).
Če želite razglasiti spremenljivko Long, uporabite stavek Dim (okrajšava za Dimension):
1 | Dim lngA as Long |
Potem, če želite spremenljivki dodeliti vrednost, preprosto uporabite znak enako:
1 | lngA = 30000 |
Dajanje tega v postopek izgleda tako:
12345678 | Sub lngExample ()'razglasi dolgo spremenljivkoDim lngA as Long'napolni dolgo spremenljivkolngA = 30000'pokaži polje s sporočilomMsgBox lngAEnd Sub |
Če zaženete zgornjo kodo, se prikaže naslednje polje s sporočilom.
Podatkovni tip LongLong
Podatkovni tip LongLong je na voljo samo v 64 -bitni različici programa Microsoft Office. Če uporabljate 32 -bitno različico sistema Office na 64 -bitni napravi, ta podatkovni tip ne bo na voljo. Podpira številke v razponu od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807.
1 | Dim lngA kot LongLong |
Podatkovni tip LongPtr
LongPtr je bil uveden v VBA za podporo 64 -bitni različici Microsoft Officea. V 32 -bitnem sistemu se obravnava kot dolg, v 64 -bitnih sistemih pa kot LongLong.
1 | Zatemni lngA kot LongPtr |
Opomba: LongPtr ni na voljo v Excelu 2007 ali starejših.
Decimalne vrednosti in dolgi tipi podatkov
Dolge spremenljivke ne morejo shranjevati decimalnih vrednosti. Če decimalno število vnesete dolgo, se decimalno število zaokroži, da ga odstranite.
Če bi torej izvedli spodnji postopek:
12345678 | Sub LngExampleB ()'razglasi dolgo spremenljivkoDim lngA as Long'napolni dolgo spremenljivkolngA = 3524,12'pokaži polje s sporočilomMsgBox lngAEnd Sub |
Decimalna vrednost bi bila zaokrožena navzdol in vrnilo bi se naslednje sporočilo:
Vendar pa spodnja koda:
12345678 | Sub LngExampleB ()'razglasi dolgo spremenljivkoDim lngA as Long'napolni dolgo spremenljivkolngA = 3524,12'pokaži polje s sporočilomMsgBox lngAEnd Sub |
Vrnilo bi se naslednje sporočilo (zaokroževanje):
Decimalni / dvojni tip podatkov
Če želite shraniti decimalno mesto, bi morali deklarirati spremenljivko, ki omogoča decimalna mesta. Uporabite lahko 3 vrste podatkov - enojne, dvojne ali valutne.
1 | Dim sngCena kot enojna |
1 | Zatemni dblCena kot dvojna |
1 | Dim curCena kot valuta |
Podatkovni tip Single bo zaokrožil decimalno vejico nekoliko drugače kot dvojni in valutni tip podatkov, zato je za natančnost bolje uporabiti dvojno do enojno. Dvojnik ima lahko do 12 decimalnih mest, medtem ko imata valuta in enojni največ 4 decimalna mesta.
Razglasite dolgo spremenljivko na modularni ali globalni ravni
V prejšnjih primerih smo v postopku razglasili spremenljivko Long. Spremenljivke, deklarirane s postopkom, se lahko uporabljajo samo v tem postopku.
Namesto tega lahko deklarirate dolge spremenljivke na modularni ali globalni ravni.
Raven modula
Raven modula spremenljivke so na vrhu kodnih modulov označene z Dim izjavo.
Te spremenljivke je mogoče uporabiti s katerim koli postopkom v tem kodnem modulu.
Globalna raven
Globalna raven spremenljivke so razglašene tudi na vrhu kodnih modulov. Namesto da uporabite Dim izjavo, uporabite Javno izjavo, ki označuje, da je dolga spremenljivka na voljo za uporabo v celotnem projektu VBA.
1 | Public lngA as Long |
Če bi dolgo spremenljivko razglasili na ravni modula in jo nato poskusili uporabiti v drugem modulu, bi prišlo do napake.
Če pa bi za objavo dolge spremenljivke uporabili ključno besedo Public, se napaka ne bi zgodila in postopek bi deloval brezhibno.
Oblikuj dolgo shranjeno kot niz
Morda boste želeli oblikovati dolg podatkovni tip v niz - na primer datum ali pa prikazati simbol valute.
Če želite to narediti, uporabite funkcijo Oblika.
Naslednji postopek:
1234567891011 | Sub TestLongToString ()'razglasite spremenljivko nizaZatemni strDate kot niz'deklarirajte long in zapolnite vrednostZatemni lngDate tako dolgolngDate = 44055'pretvori dolgi v niz, oblikovan kot datumstrDate = Oblika (lngDate, "dd mmmm llll")'si oglejte rezultatOdpravljanje napak. Natisni strDateEnd Sub |
bi vrnil spodnji rezultat:
in naslednji postopek
1234567891011 | Sub TestLongtoCurrencyString ()'razglasi spremenljivko nizaZatemni strMoney As String'deklarirajte long in zapolnite vrednostDim lngValue As LonglngValue = 44055'pretvorite dolgi v niz z valutnim simbolomstrMoney = Oblika (lngValue, "$#, ## 0")'si oglejte rezultatMsgBox str denarEnd Sub |
bi vrnil ta rezultat: