Porozumenie premenným a konštantám v makrách programu Excel

V tomto článku sa dozviete, čo sú konštanty a premenné v makrách, kde sa dajú použiť a aký je hlavný rozdiel medzi rôznymi typmi údajov. Tiež sa ukáže, prečo sú potrebné konštanty, ak môžete premennú len napísať a nikdy ju nemeniť.

Rovnako ako iné programovacie jazyky môžu byť údaje uložené v premenných alebo konštantách (obe sa tiež často označujú ako dátové kontajnery). Toto je hlavný rozdiel medzi týmito pojmami. Prvý sa môže zmeniť v závislosti od toho, čo sa deje v programe. Konštanty sú zasa nastavené raz a nemenia ich hodnotu.

Konštanty môžu byť užitočné, ak potrebujete použiť rovnakú veľkú hodnotu viackrát. Namiesto kopírovania čísla môžete jednoducho napísať názov konštanty. Napríklad môžete použiť konštantu „Pi“ na uloženie Pi, čo je konštantná hodnota. Je veľmi veľký a zakaždým je dosť ťažké ho písať alebo hľadať a kopírovať. A tak stačí napísať dva znaky a prostredie automaticky použije želané číslo.

Používateľ Excelu potrebuje deklarovať premenné, ak potrebuje z času na čas zmeniť hodnotu v nich uloženú. Môžete napríklad nastaviť premennú s názvom sVAT_Sadzba, ktorá bude uchovávať aktuálnu sadzbu DPH pre produkt. Ak sa zmení, môžete to rýchlo opraviť. Hodí sa to najmä pre tých, ktorí podnikajú v Spojených štátoch, kde niektorý tovar nemusí vôbec podliehať DPH (a táto daň sa tiež v jednotlivých štátoch líši).

Dátové typy

Každý dátový kontajner môže byť jedným z niekoľkých typov. Tu je tabuľka popisujúca štandardné typy spracovávaných informácií. Je ich veľa a začiatočníkovi sa môže spočiatku zdať, že sa navzájom opakujú. Ale to je iluzórny pocit. Čítajte ďalej a zistite, prečo je zadanie správneho typu údajov také dôležité.

Neodporúča sa používať typ údajov, ktorý zaberá viac miesta v pamäti pre malé čísla. Napríklad pre číslo 1 stačí použiť typ Byte. To bude mať pozitívny vplyv na výkon spustiteľného modulu, najmä na slabých počítačoch. Tu je však dôležité nezachádzať príliš ďaleko. Ak použijete dátový typ, ktorý je príliš kompaktný, nemusí sa doň zmestiť príliš veľká hodnota.

Deklarovanie konštánt a premenných

Dôrazne sa neodporúča používať dátový kontajner bez jeho predchádzajúceho deklarovania. Potom môže nastať množstvo problémov, na zamedzenie ktorých je potrebné napísať niekoľko malých riadkov kódu s výpočtom premenných alebo konštánt.

Na deklarovanie premennej sa používa príkaz Dim. Napríklad takto:

Dim Variable_Name As Integer

Názov_premennej je názov premennej. Ďalej sa zapíše operátor As, ktorý označuje typ údajov. Namiesto reťazcov „Názov_premennej“ a „Integer“ môžete vložiť svoj vlastný názov a typ údajov.

Konštanty môžu byť tiež deklarované, ale najprv musíte zadať ich hodnotu. Jedna z možností je:

Const iMaxCount = 5000 XNUMX

Spravodlivo sa v niektorých prípadoch zaobídete bez deklarovania premennej, no v tomto prípade im bude automaticky priradený typ Variant. Toto sa však neodporúča z nasledujúcich dôvodov:

  1. Variant sa spracováva oveľa pomalšie a ak je takýchto premenných veľa, spracovanie informácií sa môže na slabých počítačoch výrazne spomaliť. Zdalo by sa, že tie sekundy rozhodnú? Ak však musíte napísať veľký počet riadkov kódu a potom ho spustiť aj na slabých počítačoch (ktoré sa stále predávajú, pretože moderné kancelárske balíky vyžadujú veľa pamäte RAM), môžete prácu úplne zastaviť. Existujú prípady, keď nedomyslené písanie makier viedlo k zamrznutiu smartbookov, ktoré majú malé množstvo pamäte RAM a nie sú určené na vykonávanie zložitých úloh. 
  2. Chyby v názvoch sú povolené, čomu sa dá predísť použitím príkazu Option Explicit, ktorý vám umožní nájsť nedeklarovanú premennú, ak sa nájde. Je to jednoduchý spôsob, ako odhaliť chyby, pretože najmenší preklep spôsobí, že interpret nedokáže identifikovať premennú. A ak zapnete režim deklarácie premenných, interpret vám jednoducho nedovolí spustiť makro, ak sa nájdu dátové kontajnery, ktoré neboli deklarované na samom začiatku modulu.
  3. Vyhnite sa chybám spôsobeným hodnotami premenných, ktoré nezodpovedajú typu údajov. Za normálnych okolností priradenie textovej hodnoty celočíselnej premennej vyvolá chybu. Áno, na jednej strane je generický typ priradený bez deklarácie, ale ak sú deklarované vopred, je možné vyhnúť sa náhodným chybám.

Preto sa napriek všetkému dôrazne odporúča deklarovať všetky premenné v makrách Excelu.

Pri deklarovaní premenných je potrebné mať na pamäti ešte jednu vec. Pri deklarovaní premennej je možné nepriradiť žiadne hodnoty, ale v tomto prípade nadobudne predvolenú hodnotu. Napríklad:

  1. Riadky sú prázdne.
  2. Čísla nadobúdajú hodnotu 0.
  3. Premenné typu Boolean sa spočiatku považujú za nepravdivé.
  4. Predvolený dátum je 30. december 1899.

Napríklad nemusíte priradiť hodnotu 0 celočíselnej premennej, ak predtým nebola zadaná žiadna hodnota. Toto číslo už obsahuje.

Možnosť Explicitné vyhlásenie

Tento príkaz vám umožňuje deklarovať všetky premenné, ktoré sa používajú v kóde VBA, a určiť prítomnosť akýchkoľvek nedeklarovaných kontajnerov pred spustením kódu. Ak chcete použiť túto funkciu, jednoducho napíšte riadok kódu Option Explicit úplne na začiatok kódu makra.

Ak potrebujete tento príkaz zahrnúť do kódu zakaždým, môžete tak urobiť pomocou špeciálneho nastavenia v editore VBA. Ak chcete povoliť túto možnosť, musíte:

  1. Prejdite do vývojového prostredia pozdĺž cesty – Nástroje > Možnosti.
  2. V okne, ktoré sa otvorí potom, otvorte kartu Editor.
  3. A nakoniec začiarknite políčko vedľa položky Vyžadovať deklaráciu premennej.

Po dokončení týchto krokov kliknite na tlačidlo „OK“. 

To je všetko, teraz pri písaní každého nového makra sa tento riadok automaticky vloží na začiatok kódu.

Rozsah konštánt a premenných

Každá premenná alebo konštanta má len obmedzený rozsah. Záleží na tom, kde to deklarujete.

Predpokladajme, že máme funkciu Celkové náklady()a používa premennú sVAT_rate. V závislosti od pozície v module bude mať rôzny rozsah:

Možnosť Explicitná

Dim sVAT_Rate As Single

Funkcia Total_Cost() As Double

.

.

.

End Function

Ak je premenná deklarovaná v hornej časti samotného modulu, šíri sa v tomto module. To znamená, že sa dá prečítať každým postupom.

Navyše, ak jedna z procedúr zmenila hodnotu premennej, tak ďalšia prečíta aj túto opravenú hodnotu. Ale v iných moduloch sa táto premenná stále nebude čítať.

Možnosť Explicitná

Funkcia Total_Cost() As Double

Dim sVAT_Rate As Single

   .

   .

   .

End Function

V tomto prípade je premenná deklarovaná vo vnútri procedúry a tlmočník vyvolá chybu, ak sa použije v inej procedúre.

Ak chcete, aby premennú čítali iné moduly, musíte namiesto kľúčového slova Dim použiť kľúčové slovo Public. Podobne môžete obmedziť rozsah premennej iba na aktuálny modul pomocou príkazu Public, ktorý sa zapíše namiesto slova Dim.

Rozsah konštánt môžete nastaviť podobným spôsobom, ale kľúčové slovo sa tu píše spolu s operátorom Const.

Tu je tabuľka s dobrým príkladom toho, ako to funguje s konštantami a premennými.

Možnosť Explicitná

Verejná sadzba sVAT_Single

Public Const iMax_Count = 5000 XNUMX

V tomto príklade môžete vidieť, ako sa kľúčové slovo Public používa na deklarovanie premennej a čo musíte napísať v editore jazyka Visual Basic, aby ste deklarovali verejnú konštantu. Rozsah týchto kontajnerov hodnôt platí pre všetky moduly.
Možnosť Explicitná

Súkromné ​​sVAT_Rate As Single

Súkromné ​​Const iMax_Count = 5000 XNUMX

Tu sú premenné a konštanty deklarované pomocou kľúčového slova Private. To znamená, že ich možno vidieť iba v rámci aktuálneho modulu a procedúry v iných moduloch ich nemôžu používať.

Prečo sú potrebné konštanty a premenné

Použitie konštánt a premenných umožňuje zvýšiť stupeň zrozumiteľnosti kódu. A ak začiatočníci vo všeobecnosti nemajú otázky o tom, prečo sú potrebné premenné, existuje veľa nejasností, pokiaľ ide o potrebu konštánt. A táto otázka sa zdá na prvý pohľad celkom logická. Koniec koncov, premennú môžete deklarovať raz a už ju nikdy nezmeníte.

Ukazuje sa, že odpoveď je niekde v rovnakej rovine ako v prípade použitia dátových typov, ktoré zaberajú veľký priestor v pamäti. Ak máme čo do činenia s veľkým množstvom premenných, môžeme náhodne zmeniť existujúci kontajner. Ak používateľ predpíše, že určitá hodnota sa nikdy nezmení, prostredie to bude automaticky kontrolovať.

Toto je obzvlášť dôležité, keď makro píše niekoľko programátorov. Niekto môže vedieť, že niektoré premenné by sa nemali meniť. A druhý nie. Ak zadáte operátor Const, iný vývojár bude vedieť, že táto hodnota sa nemení.

Alebo, ak existuje konštanta s jedným názvom a premenná má iný, ale podobný názov. Developer si ich môže jednoducho pomýliť. Napríklad jedna premenná, ktorú nie je potrebné meniť, sa nazýva Premenná11 a ďalšia, ktorú možno upravovať, sa nazýva Premenná1. Osoba môže automaticky pri písaní kódu náhodne preskočiť jednotku navyše a nevšimnúť si ju. V dôsledku toho sa zmení kontajner pre hodnoty, ktorých by ste sa nemali dotýkať.

Alebo samotný vývojár môže zabudnúť, ktorých premenných sa môže dotknúť a ktorých nie. Toto sa často stáva, keď sa kód píše niekoľko týždňov a jeho veľkosť sa zväčší. Počas tejto doby je veľmi ľahké zabudnúť aj na to, čo tá či oná premenná znamená.

Áno, v tejto situácii si vystačíte s komentármi, ale nie je jednoduchšie špecifikovať slovo Const?

Závery

Premenné sú základnou súčasťou programovania makier, ktoré vám umožňujú vykonávať zložité operácie, od výpočtov až po informovanie používateľa o určitých udalostiach alebo špecifikáciu konkrétnych hodnôt v bunkách tabuľky.

Konštanty by sa mali používať, ak vývojár s istotou vie, že obsah týchto nádob sa v budúcnosti nezmení. Namiesto toho sa odporúča nepoužívať premenné, pretože je možné omylom urobiť chybu.

Nechaj odpoveď