VBA dolgi tip podatkov (zatemnjena spremenljivka)

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:

wave wave wave wave wave