Ve všech programovacích jazycích máme specifikátory přístupu k proměnným, které definují, odkud lze k definované proměnné přistupovat. Excel VBA není výjimkou. VBA má také specifikátory rozsahu. Tyto specifikátory rozsahu lze použít k nastavení viditelnosti/rozsahu proměnné v aplikaci Excel VBA.
V aplikaci Excel VBA máme tři typy specifikátorů rozsahu:
- Úroveň postupu
- Soukromé - Úroveň modulu
- Veřejné - Úroveň projektu
Proměnný rozsah procedury na úrovni VBA
K proměnným, které jsou deklarovány v rámci podprogramu, lze přistupovat pouze v této proceduře/funkci. Mají rozsah procedurální úrovně. Obvykle jsou deklarovány klíčovým slovem Dim. Pokud je modulem možnost implicitní, pak proměnná možná nebyla deklarována, pouze použita přímo.
V níže uvedeném příkladu máme test rozsahu podprogramu, který má proměnnou x a y. Když spustíme první podprogram, proběhne perfektně a vytiskne součet X a Y
Možnost Explicitní dílčí rozsahTest () Dim x, y jako celé číslo 'Proměnná úrovně procedury ve VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum () x = 5 y = 7 Debug.Print x + y End Sub
Ale když spustíte součet podprogramů, vyvolá to chybu, že proměnná není deklarována. Proč? Protože X a Y jsou soukromé pro proceduru scopeTest a součet podprogramů k nim nemá přístup. Z tohoto důvodu dojde k chybě sub.
Soukromá proměnná VBA- rozsah úrovně modulu
Pokud chcete deklarovat proměnnou, ke které je potřeba přistupovat v celém modulu, deklarujte tuto proměnnou jako soukromou v horní části modulu před jakýmkoli podprogramem nebo funkcí.
Proměnné deklarované před jakýmkoli podprogramem v modulu jsou ve výchozím nastavení soukromé. I když je deklarujete klíčovým slovem Dim. Ale abych byl konkrétní, je moudré použít soukromé klíčové slovo.
Níže uvedené dva postupy jsou ve stejném modulu, modulu 1.
Možnost Explicitní „proměnná na úrovni modulu ve VBA. Obě proměnné x a y jsou pro tento modul soukromé. a 'jsou přístupné z jakéhokoli dílčího nebo funkce v tomto modulu. Dim x As Integer Private y As Integer Sub scopeTest () 'To je přístupné z jakéhokoli modulu v projektu x = 2 y = 3 Debug. Tisk x + y End Sub Souhrnný součet () 'K tomuto nelze přistupovat z jiných modulů x = 5 y = 7 Debug.Print x + y End Sub
Výše uvedené dvě funkce poběží naprosto v pořádku, protože proměnná xay jsou soukromé proměnné tohoto modulu.
Důležité: Poslední hodnoty uložené v xay zůstanou zachovány až do celého modulu. Pokud nejprve spustíme sub scopeTest a neinicializujeme hodnoty x a y v součtu a spustíme jej, pak počáteční hodnota x a y zůstane nezměněna.
Níže uvedený podprogram je definován v samostatném modulu, modulu 2. Když se pokusím získat přístup k proměnné z jiného modulu, procedura (nebo funkce) VBA narazí na chybu.
Ale pokud se pokusím zavolat podprogram součet z modulu 1 v modulu 2 to funguje perfektně. Aby byla vaše funkce a podprogramy pro modul soukromé, použijte před dílčím a funkcí klíčové slovo Soukromé.
Poznámka:- Proměnné deklarované před jakýmkoli podprogramem nebo funkcí v modulu jsou pro modul ve výchozím nastavení soukromé. Můžete použít Soukromýklíčové slovo. Funkce a podprogramy jsou však ve výchozím nastavení veřejné a lze k nim přistupovat z jakéhokoli modulu v projektu. Aby byly funkce a podprogramy pro modul soukromé, musíte použít klíčové slovo Private.
Veřejné proměnné- rozsah projektu
Jak jsme se dozvěděli ve výše uvedených příkladech, funkce a podprogramy jsou ve výchozím nastavení veřejné a lze k nim přistupovat z jakéhokoli modulu, ale proměnné nikoli. Chcete -li zpřístupnit proměnnou z libovolného modulu v aplikaci Excel VBA,používáme veřejné klíčové slovo.
Chcete -li deklarovat veřejnou proměnnou v projektu, deklarovali jste je v horní části modulu před jakoukoli funkcí nebo podprogramem s veřejným klíčovým slovem. Níže uvedený kód je zapsán v modulu 1.
Možnost Explicitní „proměnná na úrovni projektu ve VBA. Public x As Integer Public y As Integer Public Sub scopeTest () 'To je přístupné z jakéhokoli modulu v projektu x = 2 y = 3 End Sub Private Sub sum ()' K tomuto nelze přistupovat z jiných modulů x = 5 y = 7 Debug.Print x + y End Sub
A tento podprogram je v jiném modulu, modulu 2.
Možnost Explicit Sub mul () Rozsah volání Test 'Suma volání' nebude fungovat, protože je soukromá pro modul 1 Debug.Print x * y End Sub
Tentokrát to běží perfektně.
Nejprve jsem zavolal podprogram scopeTest. Jelikož scopeTest je veřejný, nazývá se. Inicializuje hodnoty x a y. Dále vynásobíme x a y. Protože podprogram scopeTest jej inicializoval s hodnotami 2 a 3, výsledkem je 6.
Takže ano, lidi, takto můžete v Excelu pomocí specifikátorů rozsahu proměnných řídit viditelnost proměnných, funkcí a podprogramů v projektech Excel VBA.
Pokusil jsem se vysvětlit specifikátory přístupu VBA tím nejjednodušším způsobem, jak jsem mohl. Doufám, že to bylo vysvětlující. Máte -li jakékoli pochybnosti týkající se tohoto článku nebo jakékoli jiné pochybnosti související s VBA, zeptejte se mě v sekci komentáře níže. Budu rád, když sem od vás.
Argumenty ByRef a ByVal | Když je argument předán jako argument ByRef jinému sub nebo funkci, je odeslán odkaz na skutečnou proměnnou. Jakékoli změny provedené v kopii proměnné se projeví v původním argumentu.
Odstraňte listy bez výzev k potvrzení pomocí jazyka VBA v aplikaci Microsoft Excel | Protože listy odstraňujete pomocí jazyka VBA, víte, co děláte. Chtěli byste říct Excelu, aby toto varování nezobrazoval a ten zatracený list smazal.
Přidat a uložit nový sešit pomocí jazyka VBA v aplikaci Microsoft Excel 2016 | V tomto kódu jsme nejprve vytvořili odkaz na objekt sešitu. A pak jsme to inicializovali novým objektem sešitu. Výhodou tohoto přístupu je, že na tomto novém sešitu můžete snadno provádět operace. Stejně jako ukládání, zavírání, mazání atd
Zobrazit zprávu na stavovém řádku aplikace Excel VBA Stavový řádek v aplikaci Excel lze použít jako monitor kódu. Když je váš kód VBA dlouhý a provádíte několik úkolů pomocí VBA, často deaktivujete aktualizaci obrazovky, abyste neviděli, že obrazovka bliká
Vypnout výstražné zprávy pomocí VBA v aplikaci Microsoft Excel 2016 | Tento kód nejenže zakáže výstrahy VBA, ale také zvyšuje časovou efektivitu kódu. Uvidíme jak.
Oblíbené články:
50 zkratek aplikace Excel pro zvýšení produktivity | Získejte rychleji svůj úkol. Těchto 50 klávesových zkratek vám umožní pracovat v Excelu ještě rychleji.
Funkce VLOOKUP v Excelu | Toto je jedna z nejpoužívanějších a nejoblíbenějších funkcí Excelu, která slouží k vyhledávání hodnot z různých rozsahů a listů.
COUNTIF v aplikaci Excel 2016 | Pomocí této úžasné funkce spočítejte hodnoty s podmínkami. K počítání konkrétní hodnoty není nutné filtrovat data. Funkce Countif je nezbytná pro přípravu řídicího panelu.
Jak používat funkci SUMIF v aplikaci Excel | Toto je další základní funkce řídicího panelu. To vám pomůže shrnout hodnoty za konkrétních podmínek.