Exceli VBA andmetüüpide (muutujate ja konstantide) mõistmine

Exceli VBA -s peate sageli kasutama muutujaid ja konstandeid.

VBA -ga töötades on muutuja teie arvuti mälus asukoht, kuhu saate andmeid salvestada. Muutujatesse salvestatavate andmete tüüp sõltub muutuja andmetüübist.

Näiteks kui soovite salvestada muutujaga täisarvu, oleks teie andmetüüp „täisarv“ ja kui soovite teksti salvestada, siis oleks teie andmetüüp „string“.

Lisateavet andmetüüpide kohta leiate sellest õpetusest hiljem.

Kuigi muutuja väärtus muutub, kui kood on pooleli, hoiab konstant väärtust, mis ei muutu kunagi. Hea kodeerimistava kohaselt peaksite määratlema andmetüübi nii muutuja kui ka konstant.

Miks kasutada muutujaid VBA -s?

VBA -s kodeerimisel vajate muutujaid, mida saate väärtuse hoidmiseks kasutada.

Muutuja kasutamise eeliseks on see, et saate muuta muutuja väärtust koodis ja jätkata selle kasutamist koodis.

Näiteks allpool on kood, mis lisab esimesed 10 positiivset numbrit ja kuvab tulemuse sõnumikastis:

Sub AddFirstTenNumbers () Dim Var täisarvuna Dim i täisarv Dim k täisarvuna i = 1 kuni 10 k = k + i Järgmine i MsgBox k End Sub

Ülaltoodud koodis on kolm muutujat - Var, ija k.

Ülaltoodud kood kasutab tsüklit Järgmine, kus silmuste lõpetamisel muudetakse kõiki neid kolme muutujat.

Muutuja kasulikkus seisneb selles, et seda saab koodi töötamise ajal muuta.

Allpool on mõned reeglid, mida VBA muutujate nimetamisel silmas pidada:

  1. Võite kasutada tähestikku, numbreid ja kirjavahemärke, kuid esimene number peab olema tähestik.
  2. Muutuja nimes ei saa tühikut ega punkti kasutada. Muutujate nimede loetavamaks muutmiseks võite aga kasutada alajoonimärki (nt intressimäär)
  3. Muutujate nimedes ei saa kasutada erimärke (#, $, %, & või!)
  4. VBA ei erista muutuja nime juhtumit. Nii et „intressimäär” ja „intressimäär” on VBA puhul samad. Muutujate loetavamaks muutmiseks võite kasutada sega- ja väiketähti.
  5. VBA -l on mõned reserveeritud nimed, mida saate kasutada muutuja nime jaoks. Näiteks ei saa te muutuja nimena kasutada sõna „Järgmine”, kuna see on järgmise silmuse jaoks reserveeritud nimi.
  6. Teie muutuja nimi võib olla kuni 254 tähemärki pikk.

Muutujate andmetüüp

Muutujate parimaks kasutamiseks on hea tava määrata muutuja andmetüüp.

Muutujale määratud andmetüüp sõltub andmete tüübist, mida soovite sellele muutujale hoida.

Allpool on tabel, mis näitab kõiki saadaolevaid andmetüüpe, mida saate Excel VBA -s kasutada:

Andmetüüp Kasutatud baiti Väärtuste vahemik
Bait 1 bait 0 kuni 255
Boolean 2 baiti Õige või vale
Täisarv 2 baiti -32 768 kuni 32 767
Pikk (pikk täisarv) 4 baiti -2 147 483 648 kuni 2 147 483 647
Vallaline 4 baiti -3.402823E38 kuni -1.401298E -45 negatiivsete väärtuste korral; 1.401298E-45 kuni 3.402823E38 positiivsete väärtuste jaoks
Kahekordne 8 baiti -1,79769313486231E308 kuni -4,94065645841247E-324 negatiivsete väärtuste korral; 4.94065645841247E-324 kuni 1,79769313486232E308 positiivsete väärtuste jaoks
Valuuta 8 baiti -922 337 203 685 477,5808 kuni 922 337 203 685 477,5807
Kümnendarv 14 baiti +/- 79,228,162,514,264,337,593,543,950,335 ilma koma; +/- 7,9228162514264337593543950335, kus on 28 kohta paremal koma
Kuupäev 8 baiti 1. jaanuar 100 kuni 31. detsember 9999
Objekt 4 baiti Mis tahes viide objektile
String (muutuva pikkusega) 10 baiti + stringi pikkus 0 kuni umbes 2 miljardit
String (fikseeritud pikkusega) Stringi pikkus 1 kuni ligikaudu 65 400
Variant (numbritega) 16 baiti Mis tahes numbriline väärtus kuni kahekordse vahemikuni
Variant (tähemärkidega) 22 baiti + stringi pikkus Sama vahemik kui muutuva pikkusega stringil
Kasutaja määratud Varieerub Iga elemendi vahemik on sama kui selle andmetüübi vahemik.

Kui määrate koodis muutuja andmetüübi, ütleb see VBA -le, kuidas seda muutujat salvestada ja kui palju ruumi selle jaoks eraldada.

Näiteks kui peate kasutama muutujat, mis on mõeldud kuu numbri hoidmiseks, võite kasutada andmetüüpi BYTE (mis mahutab väärtusi 0–255). Kuna kuu number ei ületa 12, töötab see hästi ja jätab selle muutuja jaoks vähem mälu.

Vastupidi, kui teil on Excelis reanumbrite salvestamiseks vaja muutujat, peate kasutama andmetüüpi, mis mahutab numbri kuni 1048756. Seega on parem kasutada andmetüüpi Pikk.

Muutuvate andmetüüpide deklareerimine

Hea kodeerimistava kohaselt peaksite koodi kirjutades deklareerima muutujate (või konstantide) andmetüübi. See tagab, et VBA eraldab muutujale ainult määratud mälu ja see võib teie koodi kiiremini käivitada.

Allpool on näide, kus olen erinevatele muutujatele deklareerinud erinevaid andmetüüpe:

AlamdeklareerimineVariables () Dim X täisarvuna Dim Email stringina Dim FirstName String Dim Row Loendatakse nii kaua hämaraks Täna Kuupäev kui kuupäeva lõpp Alam

Muutuva andmetüübi deklareerimiseks peate kasutama DIM -lauset (mis on lühend Dimension).

Ajal „Dim X täisarvuna"Olen deklareerinud muutuja X täisarvu andmetüübiks.

Nüüd, kui ma seda oma koodis kasutan, teaks VBA, et X mahutab ainult täisarvulise andmetüübi.

Kui proovin sellele määrata väärtuse, mis ei ole täisarv, kuvatakse tõrge (nagu allpool näidatud):

Märkus. Samuti saate valida andmetüübi deklareerimata jätmise, sellisel juhul võtab VBA automaatselt arvesse varianditüübi muutujat. Andmetüübi variant mahutab mis tahes andmetüüpi. Kuigi see võib tunduda mugav, ei ole varianditüübi kasutamine hea tava. See võtab tavaliselt rohkem mälu ja võib muuta teie VBA -koodi aeglasemaks.

Muutuva deklaratsiooni kohustuslikuks muutmine (selge valik)

Kuigi saate kodeerida ilma muutujaid deklareerimata, on see hea tava.

Lisaks mälu säästmisele ja koodi tõhusamaks muutmisele on muutujate deklareerimisel veel üks oluline eelis - see aitab püüda valesti kirjutatud muutujate nimede põhjustatud vigu.

Veendumaks, et olete sunnitud muutujaid deklareerima, lisage mooduli ülaossa järgmine rida.

Valik Selge

Kui lisate „Option Explicit”, peate enne koodi käivitamist deklareerima kõik muutujad. Kui mõni muutuja on deklareerimata, kuvab VBA vea.

Option Explicit kasutamisel on tohutu kasu.

Mõnikord võite lõpuks teha trükivea ja sisestada muutuja nime, mis on vale.

Tavaliselt ei saa VBA teada, kas see on viga või tahtlik. Kui kasutate suvandit „Option Explicit”, näeb VBA aga valesti kirjutatud muutuja nime uue muutujana, mida pole deklareeritud ja mis näitab teile viga. See aitab teil tuvastada need valesti kirjutatud muutujate nimed, mida võib pika koodi puhul üsna raske märgata.

Allpool on näide, kus suvandi „Option Explicit” kasutamine tuvastab vea (mida poleks võimalik lõksu jätta, kui ma poleks valikut „Option Explicit” kasutanud)

Sub CommissionCalc () Dim CommissionRate Double Double Range ("A1"). Väärtus> 10000 Siis CommissionRate = 0,1 Else CommissionRtae = 0,05 End If MsgBox "Komisjonitasu kokku:" & Vahemik ("A1"). Väärtus * CommissionRate End Sub

Pange tähele, et olen selles koodis korra sõna „CommissionRate” valesti kirjutanud.

Kui ma ei kasuta võimalust Selgesõnaline, käivitub see kood ja annab mulle vale komisjonitasu koguväärtuse (juhul kui lahtri A1 väärtus on väiksem kui 10000).

Aga kui ma kasutan mooduli ülaosas valikut Option Explicit, ei lase see mul seda koodi käivitada enne, kui ma kas parandan valesti kirjutatud sõna või kuulutan selle teise muutujaks. See näitab viga, nagu allpool näidatud:

Kuigi saate koodi sisestamisel iga kord sisestada rea ​​„Option Explicit”, on selle vaikimisi kuvamiseks järgmised sammud:

  1. Klõpsake VB redaktori tööriistaribal nuppu Tööriistad.
  2. Klõpsake suvandil Valikud.
  3. Klõpsake dialoogiboksis Valikud vahekaarti Redaktor.
  4. Kontrollige valikut - "Nõua muutuvat deklaratsiooni".
  5. Klõpsake nuppu OK.

Kui olete selle valiku lubanud, lisab VBA uue mooduli avamisel sellele automaatselt rea „Option Explicit”.

Märkus. See suvand mõjutab ainult kõiki mooduleid, mille loote pärast selle valiku lubamist. See ei mõjuta kõiki olemasolevaid mooduleid.

Muutujate ulatus

Siiani oleme näinud, kuidas muutuja deklareerida ja sellele andmetüüpe määrata.

Selles jaotises käsitlen muutujate ulatust ja seda, kuidas saate deklareerida muutujat kasutamiseks ainult alamprogrammis, terves moodulis või kõigis moodulites.

Muutuja ulatus määrab, kus saab muutujat VBA -s kasutada,

Muutuja määramiseks Excel VBA -s on kolm võimalust:

  1. Ühes alamprogrammis (kohalikud muutujad)
  2. Mooduli sees (moodulitaseme muutujad)
  3. Kõigis moodulites (avalikud muutujad)

Vaatame kõiki neid üksikasjalikult.

Ühes alamprogrammis (kohalikud muutujad)

Kui deklareerite muutuja alamprogrammis/protseduuris, on see muutuja saadaval ainult selle alamprogrammi jaoks.

Te ei saa seda mooduli teistes alamprogrammides kasutada.

Niipea kui alamprogramm lõpeb, kustutatakse muutuja ja vabastatakse selle kasutatav mälu.

Allolevas näites on muutujad deklareeritud alamprogrammis ja need kustutatakse selle alamprogrammi lõppedes.

Mooduli sees (moodulitaseme muutujad)

Kui soovite, et muutuja oleks saadaval kõigi mooduli protseduuride jaoks, peate selle deklareerima mooduli ülaosas (mitte üheski alamprogrammis).

Kui olete selle mooduli ülaosas deklareerinud, saate seda muutujat kasutada kõigis selle mooduli toimingutes.

Ülaltoodud näites on muutuja „i” deklareeritud mooduli ülaosas ja seda saavad kasutada kõik moodulid.

Pange tähele, et kui alamprogramm lõpeb, ei kustutata mooduli taseme muutujaid (see säilitab oma väärtuse).

Allpool on näide, kus mul on kaks koodi. Kui käivitan esimese protseduuri ja seejärel teise, siis saab i väärtuseks 30 (kuna see kannab esimese protseduuri väärtust 10)

Kõigis moodulites (avalikud muutujad)

Kui soovite, et muutuja oleks töövihiku kogu protseduuris saadaval, peate selle deklareerima märksõnaga Avalik (DIM -i asemel).

Allpool olev koodirida mooduli ülaosas muudaks muutuja „CommissionRate” töövihiku kõikides moodulites kättesaadavaks.

 Avalik komisjonHinda kahekordselt

Muutujadeklaratsiooni (avalikku märksõna kasutades) saate sisestada ükskõik millisesse moodulisse (ülaosas enne mis tahes protseduuri).

Staatilised muutujad (mis säilitab väärtuse)

Kui töötate kohalike muutujatega, kaotab muutuja oma väärtuse kohe pärast protseduuri lõppu ja kustutatakse VBA mälust.

Kui soovite, et muutuja säilitaks väärtuse, peate kasutama Staatiline märksõna.

Esiteks näitan teile, mis juhtub tavalisel juhul.

Kui ma käivitan protseduuri mitu korda, näitab see allolevas koodis väärtust 10 iga kord.

Alamprotseduur1 () Dim i As täisarv i = i + 10 MsgBox i End Sub

Kui ma kasutan DIM -i asemel staatilist märksõna ja käivitan protseduuri mitu korda, kuvab see jätkuvalt väärtusi sammuga 10. See juhtub siis, kui muutuja „i” säilitab oma väärtuse ja kasutab seda arvutustes.

Alamprotseduur1 () Staatiline i täisarvuna i = i + 10 MsgBox i End Sub

Konstantide deklareerimine Excelis VBA

Kuigi muutujad võivad koodi täitmise ajal muutuda, saate fikseeritud väärtuste saamiseks kasutada konstante.

Konstant võimaldab teil nimega stringile määrata väärtuse, mida saate oma koodis kasutada.

Konstanti kasutamise eeliseks on see, et see hõlbustab koodi kirjutamist ja mõistmist ning võimaldab teil ka kõiki fikseeritud väärtusi ühest kohast juhtida.

Näiteks kui arvutate vahendustasusid ja vahendustasu on 10%, saate luua konstandi (CommissionRate) ja määrata sellele väärtuse 0,1.

Tulevikus, kui vahendustasu muutub, peate selle lihtsalt ühes kohas tegema, selle asemel, et seda igal pool koodis käsitsi muuta.

Allpool on koodinäide, kus olen konstantile väärtuse määranud:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0,1 CommissionValue = Vahemik ("A1") * CommissionRate MsgBox CommissionValue End Sub

Konstandi deklareerimiseks kasutatakse järgmist rida:

Const CommissionRate As Double = 0,1

Konstantide deklareerimisel peate alustama märksõnaga „Const, Millele järgneb konstandi nimi.

Pange tähele, et olen selles näites määranud konstandi andmetüübi kahekordseks. Jällegi on hea tava määrata andmetüüp, et muuta kood kiiremaks ja tõhusamaks.

Kui te andmetüüpi ei deklareeri, loetakse see andmetüübi variandiks.

Nii nagu muutujatel, võib ka konstantidel olla ulatus sõltuvalt sellest, kus ja kuidas need deklareeritakse:

  1. Ühe alamprogrammi piires (kohalikud konstandid): Need on saadaval alamprogrammis/protseduuris, milles need deklareeritakse. Protseduuri lõppedes kustutatakse need konstandid süsteemi mälust.
  2. Mooduli sees (moodulitaseme konstandid): Need on märgitud mooduli ülaossa (enne mis tahes protseduuri). Need on saadaval kõigi mooduli protseduuride jaoks.
  3. Kõigis moodulites (avalikud konstandid): Need on deklareeritud kasutades märksõna „Avalik” mis tahes mooduli ülaosas (enne mis tahes protseduuri). Need on saadaval kõigi moodulite kõigi protseduuride jaoks.

Samuti võivad teile meeldida järgmised VBA õpetused:

  • Kuidas Excelis makro salvestada
  • Lahtrite ja vahemikega töötamine Excel VBA -s
  • Töölehtedega töötamine Exceli VBA abil
  • Töövihikutega töötamine Excel VBA -s
  • VBA üritused
  • Exceli VBA silmused
  • Kuidas Excelis makro käivitada
  • Kui siis muu avaldus Excelis VBA.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave