Globální proměnné VBA Jak deklarovat globální proměnnou ve VBA?

Některé funkce jsou definovány uvnitř funkce a používají se v rámci funkcí a některé proměnné jsou definovány mimo funkce a jsou používány všemi funkcemi a tyto proměnné se používají jako globální proměnné, například proměnné deklarované v rámci dílčí funkce jsou známé jako globální proměnné.

Globální proměnná v aplikaci Excel VBA

Deklarace proměnné se zdá být docela jednoduchá, ale abychom měli dobré ruce, musíme pochopit rozsah těchto proměnných. Často deklarujeme proměnné pro každé makro uvnitř dílčí procedury pokaždé. Deklarováním jedné proměnné ji ale můžeme použít ve všech makrech ve stejném modulu i v ostatních modulech aktuálního projektu VBA. V tomto článku vám ukážeme, jak deklarovat globální proměnné v aplikaci Excel VBA.

Co jsou globální proměnné v aplikaci Excel VBA?

Globální proměnné VBA jsou proměnné, které jsou deklarovány před začátkem jakéhokoli makra v modulu. Pokud jsou proměnné deklarovány pomocí „Public“ nebo „Global“, stane se z nich „Global Variable“.

Proměnné dílčího postupu nelze použít kdekoli

Proměnnou uvnitř podprogramu vba obvykle deklarujeme pomocí slova „Dim“.

Podívejte se na výše uvedený obrázek, deklaroval jsem proměnnou „k“ jako celé číslo v dílčí proceduře Global_Example1.

Použijeme-li tuto proměnnou uvnitř této procedury Sub kdykoli. Tuto proměnnou však nemohu použít v jiném dílčím postupu ani ve stejném modulu třídy ve VBA, ani v jiném modulu.

Jak je znázorněno na obrázku výše, proměnnou „k“ deklarovanou v podprocesu Global_Example1 nelze použít v proceduře Sub Global_Example2.

Podobně proměnnou „j“ deklarovanou v podprocesu Global_Example2 nelze použít v proceduře Sub Global_Example1, i když jsou oba podprocesy ve stejném modulu.

Jak deklarovat globální proměnnou ve VBA?

Následují způsoby, jak deklarovat globální proměnnou v aplikaci Excel VBA.

# 1 - Proměnné modulu lze použít v jakékoli dílčí proceduře ve stejném modulu

Jak jsme viděli, nemůžeme použít proměnné dílčí procedury v žádném z modulů. Aby byly k dispozici pro všechny procedury Sub ve stejném modulu, musíme deklarovat proměnné v horní části modulu.

Na výše uvedeném obrázku jsem deklaroval proměnnou pouze na začátku modulu. V modulu 1 jsem deklaroval proměnnou „MyNumber“ jako celé číslo .

Jakmile je proměnná deklarovaná v horní části modulu, můžeme použít stejnou proměnnou pro všechny ostatní procedury Sub ve stejném modulu, v tomto případě můžeme použít proměnnou „MyNumber“ pro všechny procedury Sub v modulu 1.

Problém je, že je nemůžeme použít v žádném z ostatních modulů. V tomto případě nelze v modulu 2 použít proměnnou „MyNumber“ deklarovanou v modulu 1 .

 # 2 - Globální proměnné lze použít v jakékoli dílčí proceduře a také v libovolném modulu

Nyní jsme při používání viděli dva druhy deklarací proměnných a jejich rozsah. Zajímavostí je, že můžeme deklarovat proměnnou v kterémkoli z modulů a použít pro všechny procedury Sub ve všech modulech stejného projektu VBA.

Abychom proměnnou zpřístupnili pro všechny procedury Sub napříč všemi moduly, musíme deklarovat proměnnou v horní části modulu nikoli slovem „Dim“, ale slovem „Public“ nebo „Global“.

Na obrázku nahoře můžete vidět, že jsem použil slovo „Public“ k deklaraci proměnné namísto našeho veteránského slova „Dim“.

Na výše uvedeném snímku obrazovky jsem deklaroval proměnnou v modulu 1. Mám další dva moduly s názvem Modul 2 a Modul 3.

Protože jsem deklaroval proměnnou pomocí slova „Public“ v horní části modulu, mohu nyní k těmto proměnným přistupovat v jakékoli dílčí proceduře napříč jakýmkoli modulem stejného sešitu.

Nejen „Veřejné“, ale k deklaraci proměnné můžeme použít i slovo „Globální“.

Global & Public jsou dvě klíčová slova, která deklarují proměnnou a zpřístupňují ji napříč moduly ve VBA.

Věci k zapamatování

  • Jakmile makro aplikace Excel běží s hodnotou globální proměnné, je proměnná stejná ve všech procedurách Sub.
  • Je lepší udržovat určitý modul pro deklaraci globálních proměnných ve VBA a mít všechny proměnné v jednom modulu.
  • Jediným způsobem, jak můžeme resetovat hodnotu proměnné, je resetování kódu makra stisknutím tlačítka stop.

$config[zx-auto] not found$config[zx-overlay] not found