VBA Pitkä tietotyyppi (Dim Variable)

Pitkä muuttuva tyyppi

VBA Pitkä tietotyyppiä käytetään erittäin pitkien tietoarvojen tallentamiseen (-2 147 483 648-2 147 483 648). Se voi tallentaa vain kokonaislukuja (ilman desimaaleja).

Voit ilmoittaa pitkän muuttujan käyttämällä Dim Statementia (lyhenne Dimension):

1 Dim lngA niin pitkä

Käytä sitten yhtäsuuruusmerkkiä määrittääksesi muuttujalle arvon:

1 lngA = 30000

Tämän asettaminen menettelyyn näyttää tältä:

12345678 Esimerkki ()'ilmoita pitkä muuttujaDim lngA niin pitkä'täytä pitkä muuttujalngA = 30000'näytä viestiruutuMsgBox lngAEnd Sub

Jos suoritat yllä olevan koodin, seuraava viestiruutu tulee näkyviin.

LongLong -tyyppi

LongLong -tietotyyppi on käytettävissä vain Microsoft Officen 64 -bittisessä versiossa. Jos käytät 32 -bittistä Office -versiota 64 -bittisellä koneella, tämä tietotyyppi ei ole käytettävissä. Se tukee numeroita -9 223 372 036 854 775 808 -9 223 372 036 854 775 807.

1 Dim lngA LongLongina

LongPtr -tietotyyppi

LongPtr otettiin käyttöön VBA: ssa Microsoft Officen 64 -bittisen version tukemiseksi. 32 -bittisessä järjestelmässä sitä käsitellään Longina ja 64 -bittisissä järjestelmissä LongLongina.

1 Dim lngA LongPtr

Huomautus: LongPtr ei ole käytettävissä Excel 2007: ssä tai aiemmassa versiossa.

Desimaaliarvot ja pitkät tietotyypit

Pitkät muuttujat eivät voi tallentaa desimaaliarvoja. Jos annat desimaaliluvun pitkäksi, desimaaliluku pyöristetään desimaalin poistamiseksi.

Siksi, jos suoritat alla olevan menettelyn:

12345678 Osa LngExampleB ()'ilmoita pitkä muuttujaDim lngA niin pitkä'täytä pitkä muuttujalngA = 3524,12'näytä viestiruutuMsgBox lngAEnd Sub

Desimaaliluku pyöristetään alaspäin ja palautetaan seuraava viesti:

Tämä koodi on kuitenkin alla:

12345678 Osa LngExampleB ()'ilmoita pitkä muuttujaDim lngA niin pitkä'täytä pitkä muuttujalngA = 3524,12'näytä viestiruutuMsgBox lngAEnd Sub

Palauttaisi seuraavan viestiruudun (pyöristää ylöspäin):

Desimaali / kaksinkertainen tietotyyppi

Jos haluat tallentaa desimaalin, sinun on ilmoitettava muuttuja, joka sallii desimaalit. Voit käyttää 3 tietotyyppiä - Single, Double tai Currency.

1 Dim sngPrice Single
1 Dim dblHinta kaksinkertaisena
1 Dim curPrice valuuttana

Yksittäinen tietotyyppi pyöristää desimaalipilkun hieman eri tavalla kuin kaksois- ja valuuttatyyppi, joten on suositeltavaa käyttää kaksoiskappaletta yhdelle tarkkuuden vuoksi. Kaksoispisteessä voi olla enintään 12 desimaalia, kun taas valuutassa ja yksittäisessä voi olla enintään 4 desimaalia.

Ilmoita pitkä muuttuja moduulissa tai globaalilla tasolla

Edellisissä esimerkeissä olemme ilmoittaneet pitkän muuttujan menettelyn sisällä. Proseduurilla ilmoitettuja muuttujia voidaan käyttää vain kyseisen menettelyn sisällä.

Sen sijaan voit ilmoittaa pitkiä muuttujia moduuli- tai globaalitasolla.

Moduulitaso

Moduulitaso muuttujat ilmoitetaan koodimoduulien yläosassa Himmeä lausunto.

Näitä muuttujia voidaan käyttää minkä tahansa koodimoduulin toimenpiteen kanssa.

Globaali taso

Globaali taso muuttujat ilmoitetaan myös koodimoduulien yläosassa. Sen sijaan, että käytät Himmeä lause, käytä Julkinen lausunto osoittaa, että pitkä muuttuja on käytettävissä käytettäväksi koko VBA -projektisi.

1 Julkinen lngA niin pitkä

Jos ilmoitat pitkän muuttujan moduulitasolla ja yrität sitten käyttää sitä toisessa moduulissa, tapahtuu virhe.

Jos olisit kuitenkin käyttänyt julkista avainsanaa pitkän muuttujan ilmoittamiseen, virhe ei ilmenisi ja menettely toimisi täydellisesti.

Muoto pitkään tallennettu merkkijonoksi

Joskus haluat muotoilla pitkän tietotyypin merkkijonoksi - esimerkiksi päivämäärän tai haluat näyttää valuuttasymbolin.

Tämän saavuttamiseksi käytä Muoto -toimintoa.

Seuraava menettely:

1234567891011 AlatestiLongToString ()'julistaa merkkijonomuuttujanHimmennä strDate merkkijonona'ilmoita pitkä ja täytä arvoHimmennä päivämäärä niin kauanLngDate = 44055'muuntaa pitkän merkkijonoksi, joka on muotoiltu päivämääräksistrDate = Muoto (lngDate, "dd mmmm yyyy")'katso tulosVirheenkorjaus. Tulosta strDateEnd Sub

palauttaisi alla olevan tuloksen:

ja seuraava menettely

1234567891011 AlatestiLongtoCurrencyString ()'julistaa merkkijonomuuttujanDim strMoney merkkijonona'ilmoita pitkä ja täytä arvoDim lngValue As LonglngValue = 44055'muuntaa pitkä merkkijonoksi, jossa on valuuttasymbolistrMoney = Muoto (lngValue, "$#, ## 0")'katso tulosMsgBox strMoneyEnd Sub

palauttaisi tämän tuloksen:

wave wave wave wave wave