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: