Verejné premenné vo VBA
„Verejné premenné“ vo VBA, ako už názov napovedá, sú premenné, ktoré sa deklarujú na verejné použitie pre všetky makrá, ktoré napíšeme v rovnakom module, ako aj v rôznych moduloch. Keď sa teda premenné deklarujú na začiatku ľubovoľného makra, nazývajú sa „verejné premenné“ alebo „globálne premenné“.
Ako deklarovať verejné premenné vo VBA?
Spravidla začíname podproces VBA a vo vnútri podprocesu deklarujeme naše premenné. Toto je bežná prax, ktorú sme všetci robili až do tohto článku.
Zakaždým, keď napíšeme nový podproces, deklarujeme nové premenné s priradenými dátovými typmi. Ale dnes sa rozlúčime s opakujúcimi sa premennými naprieč podprocesmi.
Pripomeňme si starý štýl. Nižšie je uvedený kód, ktorý som napísal s jedinou premennou.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_2.jpg.webp)
V pod procedúre „Public_Variable“ som deklaroval túto premennú. Teraz nemôžem použiť žiadny z ďalších modulov.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_3.jpg.webp)
Teraz v podprocese „Public_Variable1“ nemôžeme použiť premennú „Var1“, ktorá bola deklarovaná v prvom podprocese „Public_Variable“. Toto je obmedzenie deklarovania premenných vo vnútri podprocesov.
# 1 - Premenné na úrovni modulu
Ako všetci vieme, makrá píšeme do modulov. Môžeme vložiť niekoľko modulov. Vo VBA môžeme deklarovať dva druhy „verejných premenných“, jedným je použitie premenných pre všetky podprocesy v rovnakom module a druhým používaním premenných pre všetky podprocesy vo všetkých moduloch.
Najskôr uvidíme deklarovanie verejných premenných vo VBA na úrovni modulu.
Ak chcete použiť premenné pre všetky podprocesy v rovnakom module, je potrebné pred spustením akýchkoľvek makier deklarovať premenné v hornej časti modulu.
Ďalej uvádzame ukážkovú snímku obrazovky, ktorá slúži na pochopenie.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_4.jpg.webp)
Ako vidíme na obrázku vyššie, pred spustením ľubovoľného makra v module som deklaroval dve premenné. Teraz môžu byť tieto dve premenné použité v ľubovoľnom počte makier v tomto module.
Vo vnútri podprocesu začne písať názov premennej, ktorú vidíte. Zoznam IntelliSense zobrazí názvy premenných.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_5.jpg.webp)
Teraz môžeme tieto premenné používať vo všetkých makrách, ktoré napíšeme do modulu „Module1“.
Tieto premenné sú obmedzené na použitie iba v tomto module. Napríklad teraz vložím ešte jeden modul a napíšem nové makro.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_6.jpg.webp)
V Module2 nemôžem použiť tie premenné, ktoré sme deklarovali v “Module1”.
Ako teda môžeme tieto premenné zverejniť vo VBA na použitie vo všetkých moduloch a vo všetkých čiastkových postupoch?
# 2 - Deklarujte, že premenné ich používajú verejne
Vráťte sa späť na „Module1“ v tomto module. Deklarovali sme premenné skôr, ako začneme písať spôsob makra a tiež aký svet sme použili na deklarovanie týchto premenných.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_7.jpg.webp)
Náš tradičný spôsob použitia slova „DIM“ sme deklarovali tieto premenné.
Keď používame iba slovo „DIM“, je obmedzené iba na použitie vo všetkých makrách, ale v rovnakom module.
Namiesto slova „DIM“ musíme použiť slovo „PUBLIC“ alebo „GLOBAL“, aby sme ich mohli používať vo všetkých moduloch makier.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_8.jpg.webp)
Na zverejnenie vyhlásenia premennej som použil slovo „globálny“. Môžete tiež použiť slovo „Verejné“.
![](https://cdn.know-base.net/8174293/vba_public_variables_how_to_declare_public_variables_in_vba_examples_9.jpg.webp)
Použitím slov „Globálny“ a „Verejný“ teda môžeme deklarovať premenné, ktoré je možné použiť pre všetky makrá naprieč modulmi.
Na čo treba pamätať
- Je dobrým zvykom verejne deklarovať premenné, ale predtým, ako ich vyhlásite, je potrebné mať dostatočné skúsenosti.
- Po spustení makier bude hodnota premennej makra rovnaká.
- Priraďte konkrétnu hodnotu premennej vo vnútri konkrétneho makra, aby nedošlo k zámene.