Paras vastaus
Aliohjelmilla on näkyvyysalue. VBA: ssa julkista alihakemistoa ( kutsutaan ) voidaan käyttää mistä tahansa koodimoduulista. Yksityistä alisarjaa voidaan kutsua vain moduulista, jossa se sijaitsee.
Tämän käsitteen nimi on Scope. Objekteilla ja muuttujilla on myös soveltamisala .
Tässä on lyhyt esittely: Laajuuden ja näkyvyyden ymmärtäminen
Teemme alatason yksityisen, kun tiedämme että mikään nykyisen moduulin ulkopuolella oleva ei koskaan saa tehdä mitä tämä koodi on suunniteltu; rakennamme jotain tehtävää ja asiayhteyttä. Toisaalta meidän tulisi miettiä kovasti, kun teemme alijulkisen.
Kun kirjoitat VBA: ta muille käyttäjille kuin itsellesi, et todennäköisesti halua heidän soittavan koodisi suoraan. Jokainen julkinen alialusta, jos sillä ei ole parametreja, näkyy käyttäjien Macro-luettelossa. (Alt-F8)
Julkisten tilausten piilottaminen käyttäjältä (pitäisi) yleensä hoitaa itsensä; kun soitat Sub-moduuliin toisessa moduulissa, sinun on yleensä kerrottava sille, mitä sen on tiedettävä, välittämällä sille sopivat parametrit, eikä Julkisia tilauksia -parametreja näy käyttäjän luettelossa.
Mutta joskus on kätevää käyttää apuohjelmaa, johon voidaan soittaa mistä tahansa ja joka ei vaadi parametreja; sanoa laskentataulukon painikkeesta, joka kutsuu käynnistyskoodin julkiseen moduuliin. Et halua, että käynnistysmoduulisi näkyy käyttäjille.
Anna aliisi parametri, jota et koskaan käytä. Parempi on antaa sille parametri, jota ei tarvitse mainita. Katso valinnainen parametri alla olevasta kolmannesta osasta.
Option Explicit
Sub Visible()
" Can call this guy from anywhere;
" from any module or directly by the user.
" Sub (on it"s own) is lazy shorthand for "Public Sub"
Invisible
End Sub
Private Sub Invisible()
" This Sub can ONLY be called from inside its module.
" It is not shown in the Macro list available to the user.
Tricksy
End Sub
Public Sub Tricksy(Optional pIgnore As Boolean = True)
" This sub can be called from anywhere.
" It does not require a parameter (pIgnore).
" BUT, because it has a parameter, it does not appear
" in the user"s list of available "macros".
MsgBox "Hi there", vbExclamation, "Greetings from Tricksy"
End Sub
Käyttäjä voi nähdä ja kutsua alaliittymää