Razumevanje spremenljivk in konstant v Excelovih makrih

V tem članku boste izvedeli, kaj so konstante in spremenljivke v makrih, kje jih je mogoče uporabiti in kakšna je glavna razlika med različnimi vrstami podatkov. Razkrito bo tudi, zakaj so potrebne konstante, če lahko samo napišete spremenljivko in je nikoli ne spremenite.

Tako kot drugi programski jeziki so lahko podatki shranjeni v spremenljivkah ali konstantah (oboje pogosto imenujemo tudi vsebniki podatkov). To je glavna razlika med temi pojmi. Prvo se lahko spremeni glede na dogajanje v programu. Konstante pa se nastavijo enkrat in ne spremenijo svoje vrednosti.

Konstante so lahko koristne, če morate isto veliko vrednost uporabiti večkrat. Namesto kopiranja številke lahko preprosto napišete ime konstante. Na primer, lahko uporabite konstanto "Pi" za shranjevanje Pi, ki je konstantna vrednost. Je zelo velik in vsakič ga je precej težko napisati ali iskati in kopirati. In tako, dovolj je, da napišete dva znaka, in okolje samodejno uporabi želeno številko.

Uporabnik Excela mora deklarirati spremenljivke, če mora občasno spremeniti vrednost, shranjeno v njih. Na primer, lahko nastavite spremenljivko, imenovano sVAT_Rate, ki bo shranila trenutno stopnjo DDV za izdelek. Če se spremeni, ga lahko hitro popravite. To je še posebej uporabno za tiste, ki poslujejo v Združenih državah, kjer nekatere vrste blaga morda sploh niso predmet DDV (in ta davek se razlikuje tudi od države do države).

Vrste podatkov

Vsak vsebnik podatkov je lahko enega od več vrst. Tukaj je tabela, ki opisuje standardne vrste obdelanih informacij. Veliko jih je in začetniku se morda na začetku zdi, da se ponavljajo. Toda to je iluzoren občutek. Nadaljujte z branjem, če želite izvedeti, zakaj je določanje pravilnega tipa podatkov tako pomembno.

Pri majhnih številkah ni priporočljivo uporabljati podatkovnega tipa, ki zavzame več prostora v pomnilniku. Na primer, za številko 1 zadostuje uporaba vrste Byte. To bo imelo pozitiven učinek na delovanje izvršljivega modula, zlasti na šibkih računalnikih. Vendar je pomembno, da tukaj ne greste predaleč. Če uporabljate podatkovni tip, ki je preveč kompakten, vanj morda ne bo ustrezala prevelika vrednost.

Deklariranje konstant in spremenljivk

Uporaba podatkovnega vsebnika, ne da bi ga predhodno prijavili, močno odsvetuje. Takrat se lahko pojavijo številne težave, ki bi se jim izognile, je potrebno napisati nekaj majhnih vrstic kode z oštevilčenjem spremenljivk ali konstant.

Za deklaracijo spremenljivke se uporabi stavek Dim. Na primer takole:

Dim Variable_Name kot celo število

Ime_spremenljivke je ime spremenljivke. Nato je zapisan operator As, ki označuje vrsto podatkov. Namesto nizov “Variable_Name” in “Integer” lahko vstavite svoje ime in tip podatkov.

Konstante je mogoče tudi deklarirati, vendar morate najprej določiti njihovo vrednost. Ena izmed možnosti je:

Const iMaxCount = 5000

Po pravici povedano, v nekaterih primerih lahko storite brez deklaracije spremenljivke, vendar jim bo v tem primeru samodejno dodeljen tip Variant. Vendar to ni priporočljivo iz naslednjih razlogov:

  1. Različica se obdeluje veliko počasneje in če je takšnih spremenljivk veliko, se lahko obdelava informacij na šibkih računalnikih močno upočasni. Zdi se, da bodo odločile te sekunde? Če pa morate napisati veliko število vrstic kode in jo nato tudi izvajati na šibkih računalnikih (ki se še vedno prodajajo, glede na to, da sodobni pisarniški paketi zahtevajo veliko RAM-a), lahko delo popolnoma prekinete. Obstajajo primeri, ko je slabo premišljeno pisanje makrov povzročilo zamrznitev pametnih knjig, ki imajo majhno količino RAM-a in niso zasnovane za opravljanje zapletenih nalog. 
  2. Dovoljene so tiskarske napake v imenih, ki jih lahko preprečite z uporabo izjave Option Explicit, ki vam omogoča, da poiščete neprijavljeno spremenljivko, če jo najdete. To je enostaven način za odkrivanje napak, saj že najmanjša tipkarska napaka povzroči, da tolmač ne more identificirati spremenljivke. In če vklopite način deklaracije spremenljivk, vam tolmač preprosto ne bo dovolil zagona makra, če najde vsebnike podatkov, ki niso bili deklarirani na samem začetku modula.
  3. Izogibajte se napakam, ki jih povzročajo vrednosti spremenljivk, ki se ne ujemajo s tipom podatkov. Običajno bo dodeljevanje besedilne vrednosti celoštevilski spremenljivki povzročilo napako. Da, po eni strani je generični tip dodeljen brez deklaracije, če pa so deklarirani vnaprej, se je mogoče izogniti naključnim napakam.

Zato je kljub vsemu zelo priporočljivo vse spremenljivke deklarirati v Excelovih makroh.

Pri deklaraciji spremenljivk je treba upoštevati še eno stvar. Možno je, da spremenljivki ne dodelite nobene vrednosti, ko jo deklarirate, vendar v tem primeru pridobi privzeto vrednost. Na primer:

  1. Vrstice so prazne.
  2. Številke dobijo vrednost 0.
  3. Spremenljivke tipa Boolean so na začetku obravnavane kot napačne.
  4. Privzeti datum je 30. december 1899.

Celoštevilski spremenljivki vam na primer ni treba dodeliti vrednosti 0, če predhodno ni bila navedena nobena vrednost. To številko že vsebuje.

Možnost Eksplicitna izjava

Ta stavek vam omogoča, da deklarirate vse spremenljivke, ki se uporabljajo v kodi VBA, in ugotovite prisotnost morebitnih neprijavljenih vsebnikov, preden se koda zažene. Če želite uporabiti to funkcijo, preprosto napišite vrstico kode Option Explicit na sam vrh kode makra.

Če morate to izjavo vsakič vključiti v kodo, lahko to storite s posebno nastavitvijo v urejevalniku VBA. Če želite omogočiti to možnost, morate:

  1. Po poti pojdite v razvojno okolje – Orodja > Možnosti.
  2. V oknu, ki se odpre po tem, odprite zavihek Urejevalnik.
  3. In končno, potrdite polje zraven elementa Zahtevaj deklaracijo spremenljivke.

Po zaključku teh korakov kliknite na gumb "V redu". 

To je to, zdaj bo pri pisanju vsakega novega makra ta vrstica samodejno vstavljena na vrh kode.

Obseg konstant in spremenljivk

Vsaka spremenljivka ali konstanta ima le omejen obseg. Odvisno, kje ga prijaviš.

Recimo, da imamo funkcijo Skupni stroški()in uporablja spremenljivko sDDV_Rate. Odvisno od položaja v modulu bo imel različen obseg:

Option Explicit

Dim sVAT_Rate As Single

Funkcija Total_Cost() kot Double

.

.

.

End Function

Če je spremenljivka deklarirana na vrhu samega modula, se širi po tem modulu. To pomeni, da ga je mogoče prebrati z vsakim postopkom.

Poleg tega, če je eden od postopkov spremenil vrednost spremenljivke, bo naslednji prebral tudi to popravljeno vrednost. Toda v drugih modulih ta spremenljivka še vedno ne bo prebrana.

Option Explicit

Funkcija Total_Cost() kot Double

Dim sVAT_Rate As Single

   .

   .

   .

End Function

V tem primeru je spremenljivka deklarirana znotraj procedure in tolmač bo vrgel napako, če bo uporabljena v drugi proceduri.

Če želite, da spremenljivko berejo drugi moduli, morate namesto ključne besede Dim uporabiti ključno besedo Public. Podobno lahko omejite obseg spremenljivke samo na trenutni modul z uporabo izjave Public, ki je napisana namesto besede Dim.

Obseg konstant lahko nastavite na podoben način, vendar je tukaj ključna beseda zapisana skupaj z operatorjem Const.

Tukaj je tabela z dobrim primerom, kako deluje s konstantami in spremenljivkami.

Option Explicit

Javna sVAT_Rate kot ena

Public Const iMax_Count = 5000

V tem primeru si lahko ogledate, kako se ključna beseda Public uporablja za deklaracijo spremenljivke in kaj morate napisati v urejevalnik Visual Basic, da deklarirate javno konstanto. Obseg teh vsebnikov vrednosti velja za vse module.
Option Explicit

Zasebna stopnja sVAT_Rate kot ena

Private Const iMax_Count = 5000

Tukaj so spremenljivke in konstante deklarirane s ključno besedo Private. To pomeni, da jih je mogoče videti le znotraj trenutnega modula, postopki v drugih modulih pa jih ne morejo uporabiti.

Zakaj so potrebne konstante in spremenljivke

Uporaba konstant in spremenljivk vam omogoča, da povečate stopnjo razumljivosti kode. In če začetniki na splošno nimajo vprašanj o tem, zakaj so potrebne spremenljivke, potem obstaja veliko nejasnosti glede potrebe po konstantah. In to vprašanje se zdi na prvi pogled povsem logično. Navsezadnje lahko spremenljivko deklarirate enkrat in je nikoli več ne spremenite.

Izkaže se, da je odgovor nekje v isti ravnini kot pri uporabi podatkovnih vrst, ki zasedajo veliko prostora v pomnilniku. Če imamo opravka z ogromnim številom spremenljivk, lahko pomotoma spremenimo obstoječi vsebnik. Če uporabnik predpiše, da se določena vrednost ne bo nikoli spremenila, bo okolje to samodejno nadzorovalo.

To je še posebej pomembno, če makro piše več programerjev. Morda vemo, da se neka spremenljivka ne bi smela spremeniti. In drugega ni. Če podate operator Const, bo drug razvijalec vedel, da se ta vrednost ne spremeni.

Ali pa, če obstaja konstanta z enim imenom, spremenljivka pa ima drugačno, vendar podobno ime. Razvijalec jih lahko preprosto zmede. Na primer, ena spremenljivka, ki je ni treba spreminjati, se imenuje Spremenljivka11, druga, ki jo je mogoče urejati, pa se imenuje Spremenljivka1. Oseba lahko samodejno, ko piše kodo, pomotoma preskoči dodatno enoto in je ne opazi. Posledično se spremeni vsebnik za vrednosti, ki se ga ne sme dotikati.

Ali pa lahko razvijalec sam pozabi, katerih spremenljivk se lahko dotakne in katerih ne. To se pogosto zgodi, ko se koda piše več tednov in njena velikost postane velika. V tem času je zelo enostavno pozabiti celo, kaj ta ali ona spremenljivka pomeni.

Da, v tej situaciji lahko naredite s komentarji, vendar ali ni lažje določiti besedo Const?

Sklepi

Spremenljivke so bistvena sestavina programiranja makrov, ki vam omogočajo izvajanje kompleksnih operacij, od izračunov do obveščanja uporabnika o določenih dogodkih ali določanja določenih vrednosti v celicah preglednice.

Konstante je treba uporabiti, če razvijalec zagotovo ve, da se vsebina teh vsebnikov v prihodnosti ne bo spremenila. Priporočljivo je, da namesto njih ne uporabljate spremenljivk, saj se lahko pomotoma zmotite.

Pustite Odgovori