Globálna premenná VBA

Obsah

V tomto návode sa budeme zaoberať globálnymi premennými. Premenná vo VBA môže mať iný rozsah. Rozsah premennej je založený na jej pozícii v kóde a spôsobe, akým je deklarovaná. Rozsah premennej naznačuje jej viditeľnosť a miesto, kde ju možno použiť.

Premenná na úrovni postupu

Tieto premenné je možné použiť iba v rámci čiastkovej procedúry alebo funkcie, v ktorej sú deklarované. Premennú na úrovni procedúry musíte deklarovať pomocou kľúčového slova Dim. Okrem toho ho musíte zaradiť do čiastkového postupu alebo funkcie, ktorá vás zaujíma. Spôsob, akým by ste deklarovali premennú na úrovni procedúry, je uvedený v nasledujúcom kóde:

1234567 Pod DeklaráciaAProcedureLevelVariable ()Dim someNumber As IntegersomeNumber = 5MsgBox someNumberKoniec pod

Výsledkom je:

Túto premennú môžete použiť iba v rámci čiastkového postupu s názvom DeclaringAProcedureLevelVariable (). Pretože je to v tomto čiastkovom postupe, použili sme kľúčové slovo Dim. Ak to zavoláte z iného čiastkového postupu, zobrazí sa nasledujúca chyba:

Premenná úrovne modulu

Premennú na úrovni modulu môžete použiť v ktoromkoľvek z čiastkových postupov alebo funkcií v rámci toho istého modulu. Deklaráciu premennej musíte umiestniť na vrch modulu v sekcii Deklarácie, pod príkaz Explicitné možnosti a použiť kľúčové slovo Dim:

Keď namiesto chybového hlásenia spustíme druhý čiastkový postup, v bunke A1 zošita dostaneme nasledujúci výsledok:

Globálna premenná úrovne

Globálnu premennú môžete použiť vo svojich moduloch, funkciách, čiastkových postupoch a triedach. Globálnu premennú deklarujete v sekcii Vyhlásenia pod výrazom Možnosti explicitne a pomocou kľúčového slova Globálne. Spôsob, akým deklarujete premennú na globálnej úrovni, je uvedený nižšie. Oba čiastkové postupy v Module1 môžu používať túto premennú.

Pretože je táto premenná globálnou premennou, môžete ju použiť aj v Module2:

Keď spustíte tento kód z Module2, získate nasledujúci výsledok:

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave