Kintamųjų ir konstantų supratimas „Excel“ makrokomandose

Šiame straipsnyje sužinosite, kokios konstantos ir kintamieji yra makrokomandose, kur juos galima naudoti ir koks yra pagrindinis skirtingų duomenų tipų skirtumas. Taip pat bus atskleista, kodėl reikalingos konstantos, jei galite tiesiog parašyti kintamąjį ir niekada jo nekeisti.

Kaip ir kitose programavimo kalbose, duomenys gali būti saugomi kintamuosiuose arba konstantose (jie abu taip pat dažnai vadinami duomenų konteineriais). Tai yra pagrindinis skirtumas tarp šių sąvokų. Pirmieji gali keistis priklausomai nuo to, kas vyksta programoje. Savo ruožtu konstantos nustatomos vieną kartą ir jų reikšmės nekeičia.

Konstantos gali būti naudingos, jei tą pačią didelę reikšmę reikia naudoti kelis kartus. Užuot nukopijavę skaičių, galite tiesiog parašyti konstantos pavadinimą. Pavyzdžiui, galite naudoti konstantą „Pi“, kad išsaugotumėte Pi, kuri yra pastovi reikšmė. Jis yra labai didelis ir kiekvieną kartą gana sunku jį parašyti arba ieškoti ir nukopijuoti. Taigi, pakanka parašyti du simbolius, ir aplinka automatiškai naudoja norimą skaičių.

„Excel“ vartotojas turi deklaruoti kintamuosius, jei jam reikia retkarčiais pakeisti juose saugomą reikšmę. Pavyzdžiui, galite nustatyti kintamąjį sVAT_Rate, kuris išsaugos dabartinį produkto PVM tarifą. Jei jis pasikeičia, galite greitai jį ištaisyti. Tai ypač naudinga tiems, kurie užsiima verslu Jungtinėse Amerikos Valstijose, kur kai kurios prekės gali būti visai neapmokestinamos PVM (ir šis mokestis įvairiose valstijose taip pat skiriasi).

Duomenų tipai

Kiekvienas duomenų konteineris gali būti vieno iš kelių tipų. Čia yra lentelė, kurioje aprašomi standartiniai apdorotos informacijos tipai. Jų yra daug, ir pradedantiesiems iš pradžių gali atrodyti, kad jie kartojasi. Bet tai iliuzinis jausmas. Skaitykite toliau, kad sužinotumėte, kodėl taip svarbu nurodyti teisingą duomenų tipą.

Mažiems skaičiams nerekomenduojama naudoti duomenų tipo, kuris užima daugiau vietos atmintyje. Pavyzdžiui, skaičiui 1 pakanka naudoti baitų tipą. Tai turės teigiamos įtakos vykdomojo modulio veikimui, ypač silpnuose kompiuteriuose. Tačiau čia svarbu nenueiti per toli. Jei naudojate per kompaktišką duomenų tipą, per didelė reikšmė jame gali netilpti.

Konstantų ir kintamųjų deklaravimas

Labai nerekomenduojama naudoti duomenų talpyklos prieš tai jo nepaskelbus. Tuomet gali kilti nemažai problemų, kurių išvengti reikia parašyti kelias mažas kodo eilutes su kintamųjų ar konstantų išvardinimu.

Kintamajam deklaruoti naudojamas Dim sakinys. Pavyzdžiui, taip:

Dim Variable_Name kaip sveikasis skaičius

Variable_Name yra kintamojo pavadinimas. Toliau įrašomas operatorius As, nurodantis duomenų tipą. Vietoj eilučių „Variable_Name“ ir „Integer“ galite įterpti savo vardą ir duomenų tipą.

Taip pat galima deklaruoti konstantas, bet pirmiausia turite nurodyti jų reikšmę. Vienas iš variantų yra:

Const iMaxCount = 5000

Tiesą sakant, kai kuriais atvejais galite nedeklaruoti kintamojo, tačiau tokiu atveju jiems automatiškai bus priskirtas tipas Variantas. Tačiau tai nerekomenduojama dėl šių priežasčių:

  1. Variantas apdorojamas daug lėčiau, o jei tokių kintamųjų yra daug, silpnuose kompiuteriuose informacijos apdorojimas gali gerokai sulėtinti. Atrodytų, tos sekundės nulems? Bet jei turite parašyti daug kodo eilučių, o tada paleisti jį silpnuose kompiuteriuose (kurie vis dar parduodami, atsižvelgiant į tai, kad šiuolaikiniams biuro rinkiniams reikia daug RAM), galite visiškai sustabdyti darbą. Pasitaiko atvejų, kai netinkamai suplanuotas makrokomandų rašymas privedė prie išmaniųjų knygų, kurios turi nedidelį kiekį RAM ir nėra skirtos sudėtingoms užduotims atlikti, užšalimo. 
  2. Leidžiami pavadinimų spausdinimo klaidos, kurių galima išvengti naudojant Option Explicit teiginį, kuris leidžia rasti nedeklaruotą kintamąjį, jei jis rastas. Tai paprastas būdas aptikti klaidas, nes dėl menkiausios rašybos klaidos vertėjas negali identifikuoti kintamojo. O jei įjungsite kintamųjų deklaravimo režimą, interpretatorius paprasčiausiai neleis paleisti makrokomandos, jei bus rasti duomenų konteineriai, kurie nebuvo deklaruoti pačioje modulio pradžioje.
  3. Venkite klaidų, kurias sukelia kintamųjų reikšmės, neatitinkančios duomenų tipo. Paprastai sveikajam kintamajam priskyrus teksto reikšmę, atsiras klaida. Taip, viena vertus, bendrinis tipas priskiriamas be deklaracijos, bet jei jie deklaruojami iš anksto, atsitiktinių klaidų galima išvengti.

Todėl, nepaisant visko, labai rekomenduojama visus kintamuosius deklaruoti Excel makrokomandose.

Deklaruojant kintamuosius reikia atsiminti dar vieną dalyką. Deklaruojant kintamąjį galima nepriskirti jokių reikšmių, tačiau tokiu atveju jis įgyja numatytąją reikšmę. Pavyzdžiui:

  1. Eilutės daromos tuščios.
  2. Skaičiai įgyja 0 reikšmę.
  3. Būlio tipo kintamieji iš pradžių laikomi klaidingais.
  4. Numatytoji data yra 30 m. gruodžio 1899 d.

Pavyzdžiui, jums nereikia priskirti reikšmės 0 sveikajam kintamajam, jei anksčiau nebuvo nurodyta jokia reikšmė. Ji jau turi šį numerį.

Parinktis Aiškus pareiškimas

Šis teiginys leidžia deklaruoti visus VBA kode naudojamus kintamuosius ir nustatyti, ar yra nedeklaruotų konteinerių prieš paleidžiant kodą. Norėdami naudoti šią funkciją, tiesiog parašykite aiškaus parinkties kodo eilutę pačioje makrokomandos kodo viršuje.

Jei kiekvieną kartą reikia įtraukti šį teiginį į savo kodą, tai galite padaryti naudodami specialų nustatymą VBA rengyklėje. Norėdami įjungti šią parinktį, turite:

  1. Eikite į kūrimo aplinką kelyje – Įrankiai > Parinktys.
  2. Po to atsidariusiame lange atidarykite skirtuką Redagavimo priemonė.
  3. Ir galiausiai pažymėkite langelį šalia elemento Reikalauti kintamojo deklaracijos.

Atlikę šiuos veiksmus, spustelėkite mygtuką „Gerai“. 

Tai viskas, dabar rašant kiekvieną naują makrokomandą ši eilutė bus automatiškai įterpiama kodo viršuje.

Konstantų ir kintamųjų apimtis

Kiekvienas kintamasis arba konstanta turi tik ribotą taikymo sritį. Tai priklauso nuo to, kur tai deklaruosite.

Tarkime, kad turime funkciją Iš viso išlaidų(), ir jis naudoja kintamąjį sVAT_Rate. Priklausomai nuo pozicijos modulyje, jo taikymo sritis bus skirtinga:

Aiški parinktis

Dim sVAT_Rate As Single

Funkcija Total_Cost() kaip dviguba

.

.

.

End Function

Jei kintamasis deklaruojamas paties modulio viršuje, jis plinta visame modulyje. Tai yra, jį galima perskaityti atliekant kiekvieną procedūrą.

Be to, jei viena iš procedūrų pakeitė kintamojo reikšmę, tada kita taip pat skaitys šią pataisytą reikšmę. Tačiau kituose moduliuose šis kintamasis vis tiek nebus skaitomas.

Aiški parinktis

Funkcija Total_Cost() kaip dviguba

Dim sVAT_Rate As Single

   .

   .

   .

End Function

Tokiu atveju kintamasis deklaruojamas procedūros viduje, o interpretatorius išmes klaidą, jei jis bus naudojamas kitoje procedūroje.

Jei norite, kad kintamąjį skaitytų kiti moduliai, turite naudoti viešąjį raktinį žodį, o ne Dim. Panašiai galite apriboti kintamojo apimtį tik dabartiniu moduliu, naudodami viešąjį pareiškimą, kuris rašomas vietoj žodžio Dim.

Konstantų apimtį galite nustatyti panašiai, tačiau raktinis žodis čia rašomas kartu su operatoriumi Const.

Čia yra lentelė su geru pavyzdžiu, kaip ji veikia su konstantomis ir kintamaisiais.

Aiški parinktis

Viešas sVAT_Rate As Single

Public Const iMax_Count = 5000

Šiame pavyzdyje galite pamatyti, kaip viešasis raktinis žodis naudojamas kintamajam deklaruoti ir ką reikia parašyti Visual Basic redaktoriuje, kad paskelbtumėte viešą konstantą. Šių verčių konteinerių apimtis taikoma visiems moduliams.
Aiški parinktis

Privatus sVAT_Rate As Single

Privatus Const iMax_Count = 5000

Čia kintamieji ir konstantos deklaruojamos naudojant privatų raktinį žodį. Tai reiškia, kad juos galima matyti tik dabartiniame modulyje, o kitų modulių procedūros negali jų naudoti.

Kodėl reikalingos konstantos ir kintamieji

Konstantų ir kintamųjų naudojimas leidžia padidinti kodo suprantamumo laipsnį. Ir jei pradedantiesiems apskritai nekyla klausimų, kam reikalingi kintamieji, tuomet kyla daug neaiškumų dėl konstantų poreikio. Ir šis klausimas iš pirmo žvilgsnio atrodo gana logiškas. Juk kintamąjį galima deklaruoti vieną kartą ir daugiau niekada jo nekeisti.

Paaiškėjo, kad atsakymas yra kažkur toje pačioje plokštumoje, kiek tai susiję su duomenų tipų, kurie užima daug vietos atmintyje, naudojimu. Jei susiduriame su daugybe kintamųjų, galime netyčia pakeisti esamą konteinerį. Jei vartotojas nurodo, kad tam tikra reikšmė niekada nepasikeis, aplinka tai automatiškai valdys.

Tai ypač svarbu, kai makrokomandą parašė keli programuotojai. Galima žinoti, kad kai kurie kintamieji neturėtų keistis. O kito nėra. Jei nurodysite operatorių Const, kitas kūrėjas žinos, kad ši reikšmė nesikeičia.

Arba, jei yra konstanta su vienu pavadinimu, o kintamasis turi skirtingą, bet panašų pavadinimą. Kūrėjas gali juos tiesiog supainioti. Pavyzdžiui, vienas kintamasis, kurio nereikia keisti, vadinamas Kintamasis11, o kitas, kurį galima redaguoti, – Kintamasis1. Žmogus gali automatiškai, rašydamas kodą, netyčia praleisti papildomą vienetą ir jo nepastebėti. Dėl to bus pakeistas vertybių konteineris, kurio negalima liesti.

Arba pats kūrėjas gali pamiršti, kuriuos kintamuosius gali liesti, o kurių – ne. Taip dažnai nutinka, kai kodas rašomas kelias savaites, o jo dydis tampa didelis. Per šį laiką labai lengva pamiršti, ką reiškia tas ar kitas kintamasis.

Taip, šioje situacijoje galima daryti su komentarais, bet ar ne lengviau nurodyti žodį Const?

Išvados

Kintamieji yra esminis makrokomandos programavimo komponentas, leidžiantis atlikti sudėtingas operacijas – nuo ​​skaičiavimų iki vartotojo informavimo apie tam tikrus įvykius arba konkrečių reikšmių nurodymo skaičiuoklės langeliuose.

Konstantos turėtų būti naudojamos, jei kūrėjas tikrai žino, kad šių konteinerių turinys ateityje nepasikeis. Vietoj jų rekomenduojama nenaudoti kintamųjų, nes galima netyčia suklysti.

Palikti atsakymą