Súkromné ​​a verejné postupy VBA (podsekcie a funkcie)

Tento tutoriál vysvetlí rozdiel medzi verejnými a súkromnými vyhláseniami vo VBA a ako špecifikovať moduly ako súkromné.

Verejné a súkromné ​​čiastkové postupy

Procedúry (čiastkové a funkcie) môžu byť vo VBA vyhlásené za súkromné ​​alebo verejné. Ak sú verejné, znamená to, že ich uvidíte z okna makra programu Excel a je možné ich volať odkiaľkoľvek z vášho projektu VBA. Ak sú súkromné, nie je ich možné vidieť v okne makier programu Excel a je ich možné použiť iba v rámci modulu, v ktorom sú deklarované (pomocou bežných metód nájdete spôsoby prístupu k súkromným procedúram z iných modulov v spodnej časti tohto článku) .

Verejné funkcie je možné volať podobne ako vstavané funkcie programu Excel v hárku programu Excel.

Poznámka: Premenné a konštanty môžu byť tiež verejné alebo súkromné.

Okno makra programu Excel

V predvolenom nastavení sú makrá programu Excel (väčšina postupov VBA) viditeľné pre používateľov zošita v okne Makro:

Tieto sa zvažujú Verejné postupy. Postupy môžete explicitne definovať ako verejné pridaním „Verejného“ pred podpoložku:

123 Public Sub HelloWorld ()MsgBox „Hello World“Koniec pod

Ak nedefinujete postup ako verejný, bude považovaný za verejný.

Ak chcete procedúru vyhlásiť za súkromnú, jednoducho pred podpoložku procedúry pridajte „súkromná“:

123 Private Sub HelloEveryone ()MsgBox „Ahoj všetci“Koniec pod

Druhý postup by nebol viditeľný v okne Makro pre používateľov Excelu, ale stále ho môže použiť vo vašom kóde VBA.

Postupy s argumentmi

Vedľajšie postupy môžu mať argumenty. Argumenty sú vstupmi do čiastkového postupu:

123 Sub Hello (strName ako reťazec)MsgBox „Dobrý deň“ & strNameKoniec pod

Ak má čiastkový postup argumenty, nikdy sa nezobrazí v okne makier bez ohľadu na to, či je deklarovaný ako verejný, pretože neexistuje spôsob, ako argumenty deklarovať.

Funkcie sa tiež nikdy nezobrazia v okne makier bez ohľadu na to, či sú vyhlásené za verejné.

Verejné funkcie v programe Excel je možné použiť priamo v pracovnom hárku ako „používateľsky definovanú funkciu“ (UDF). V zásade ide o vlastný vzorec, ktorý je možné zavolať priamo do pracovného hárka. Nájdete ich v kategórii „Definované používateľom“ v okne „Vložiť funkciu“ alebo ich môžete napísať priamo do bunky.

Programovanie VBA | Generátor kódu pracuje za vás!

Použitie procedúr medzi modulmi vo vašom projekte VBA

Verejné postupy je možné vyvolať z akéhokoľvek modulu alebo formulára v rámci vášho projektu VBA.

Pokus o volanie súkromnej procedúry z iného modulu bude mať za následok chybu (Poznámka: Opravu nájdete v spodnej časti tohto článku).

Poznámka: Verejné postupy a premenné v moduloch triedy sa správajú mierne odlišne a sú mimo rozsahu tohto článku.

Rôzne moduly môžu ukladať procedúry s rovnakým názvom za predpokladu, že sú oba súkromné.

Ak majú dva alebo viac postupov rovnaký názov a sú vyhlásené za verejné, pri spustení kódu sa zobrazí chyba kompilácie „Zistený nejednoznačný názov“.

Súkromné ​​moduly

Moduly sú predvolene verejné.

Aby bol modul súkromný, umiestnite nasledujúce kľúčové slovo do hornej časti modulu.

1 Voliteľný súkromný modul

Ak modul vyhlásite za súkromný, všetky procedúry v tomto module nebudú pre používateľov Excelu viditeľné. Procedúry funkcií sa nezobrazia v okne Vložiť funkciu, ale dajú sa použiť v hárku programu Excel, pokiaľ používateľ pozná názov funkcie!

Vedľajšie postupy sa nezobrazia v okne makier, ale budú stále k dispozícii na použitie v projekte VBA.

Prístup k súkromnej procedúre z iného modulu

Ako je uvedené vyššie, súkromné ​​postupy sú v iných moduloch kódu neprístupné „bežnými“ metódami. K súkromným procedúram však máte prístup pomocou Aplikácia. Spustiť príkaz dostupný vo VBA.

Zvážte nasledujúce 3 moduly.

Modul 2 je a Súkromné Modul s a Verejné Čiastkový postup, zatiaľ čo modul 3 je Verejné modul s a Súkromné Vedľajší postup.

V Module1 môžeme nazvať Hello World - Voliteľný súkromný modul v hornej časti nám nebráni volať čiastkový postup - slúži iba na skrytie čiastkového postupu v okne makra.

Nepotrebujeme ani príkaz Call - slúži na uľahčenie čítania kódu.

Kód môže vyzerať aj takto:

1234 Sub CallHelloFromPrivate ()'zavolajte submajstra zo súkromného moduluHelloWorldKoniec pod

Tiež môžeme spustiť čiastkový postup HelloWorld pomocou VBA Aplikácia. Spustiť príkaz.

V Module3 však bola procedúra GoodMorningWorld vyhlásená za súkromnú. Nemôžete ho volať z iného modulu pomocou „normálnych“ prostriedkov, tj. Výpisu hovoru.

Musíte použiť Application.RunCommand spustiť Private Sub z iného modulu.

1234 Sub CallDobré ráno ()'spustite súkromný sub z verejného moduluApplication.Run („GoodMorningWorld“)Koniec pod

Všimnite si, keď používate Application.RunCommand príkaz, musíte vložiť názov čiastkovej procedúry do obrátených čiarok.

Ak sa pokúsime použiť príkaz Call na spustenie čiastkovej procedúry GoodMorningWorld, vyskytne sa chyba.

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

wave wave wave wave wave