Zasebni vs javni postopki VBA (podvrste in funkcije)

Ta vadnica bo razložila razliko med javno in zasebno izjavo v VBA in kako določiti module kot zasebne.

Javni vs zasebni pod postopki

Postopke (pod in funkcije) lahko v VBA razglasite za zasebne ali javne. Če so javne, to pomeni, da jih boste lahko videli v oknu makra Excel in jih lahko pokličete od koder koli v svojem projektu VBA. Če so zasebne, jih ni mogoče videti v Excelovem makro oknu in so na voljo samo za uporabo v modulu, v katerem so deklarirane (z običajnimi metodami glejte dno tega članka za načine dostopa do zasebnih postopkov iz drugih modulov) .

Javne funkcije lahko pokličete kot vgrajene Excelove funkcije na Excelovem delovnem listu.

Opomba: Spremenljivke in konstante so lahko tudi javne ali zasebne.

Okno makra Excel

Uporabniki delovnega zvezka so privzeto vidni Excelovi makri (večina postopkov VBA) v oknu makrov:

Ti se upoštevajo Javno postopke. Postopke lahko izrecno opredelite kot javne, tako da pred stavkom Sub dodate »Javno«:

123 Javna podzdrava HelloWorld ()MsgBox "Pozdravljeni svet"End Sub

Če postopka ne opredelite kot Javnega, se šteje, da je Javen.

Če želite postopek razglasiti kot zasebnega, pred podnavedbo postopka preprosto dodajte »Zasebno«:

123 Zasebna podzdrava HelloEveryone ()MsgBox "Pozdravljeni vsi"End Sub

Drugi postopek v oknu makra ne bo viden uporabnikom Excela, lahko pa ga uporabite v kodi VBA.

Postopki z argumenti

Podprocedure imajo lahko argumente. Argumenti so vložki v podproceduro:

123 Sub Hello (strName kot niz)MsgBox "Hello" & strNameEnd Sub

Če ima podprocedura argumente, se ne bo nikoli prikazala v oknu makra, ne glede na to, ali je razglašena za javno, ker argumentov ni mogoče razglasiti.

Funkcije se tudi ne bodo nikoli pojavile v oknu makrov, ne glede na to, ali so razglašene za javne.

Javne funkcije v Excelu se lahko uporabljajo neposredno na delovnem listu kot "uporabniško določena funkcija" (UDF). To je v bistvu formula po meri, ki jo lahko pokličete neposredno na delovnem listu. Najdete jih v kategoriji »Uporabniško določeno« v oknu »Vstavi funkcijo« ali pa jih vnesite neposredno v celico.

Programiranje VBA | Generator kod deluje za vas!

Uporaba postopkov med moduli v vašem projektu VBA

Javne postopke lahko kličete iz katerega koli modula ali obrazca v vašem projektu VBA.

Če poskusite poklicati zasebni postopek iz drugega modula, bo prišlo do napake (Opomba: oglejte si spodnji del tega članka).

Opomba: Javni postopki in spremenljivke v modulih razredov se obnašajo nekoliko drugače in so izven področja uporabe tega članka.

Različni moduli lahko shranjujejo postopke z istim imenom, če sta oba zasebna.

Če imata dva ali več postopkov isto ime in sta razglašena za javna, boste pri izvajanju kode prejeli napako pri prevajanju »Zaznano dvoumno ime«.

Zasebni moduli

Privzeto so moduli javni.

Če želite modul narediti zasebnega, postavite naslednjo ključno besedo na vrh modula.

1 Možnost Zasebni modul

Če modul razglasite za zasebnega, uporabniki programa Excel ne bodo vidni nobeni postopki v modulu. Postopki delovanja ne bodo prikazani v oknu Vstavi funkcijo, vendar jih lahko še vedno uporabljate v Excelovem listu, dokler uporabnik pozna ime funkcije!

Podprocedure se ne bodo pojavile v oknu makra, vendar bodo še vedno na voljo za uporabo v projektu VBA.

Dostop do zasebnega postopka iz drugega modula

Kot je navedeno zgoraj, zasebni postopki v drugih kodnih modulih niso dostopni po "običajnih" metodah. Do zasebnih postopkov pa lahko dostopate z Aplikacija.Zaženi ukaz na voljo v VBA.

Razmislite o naslednjih 3 modulih.

Modul 2 je a Zasebno Modul z a Javno Podprocedura, modul 3 pa je Javno modul z a Zasebno Podpostopek.

V modulu 1 lahko pokličemo Hello World - Možnost Zasebni modul na vrhu nam ne preprečuje, da pokličemo podprocesor - vse, kar je potrebno, je, da skrijemo podprocesor v okno makra.

Prav tako ne potrebujemo stavka Call - tam je, da olajša branje kode.

Koda bi lahko izgledala tudi tako:

1234 Sub CallHelloFromPrivate ()'pokličite pomožno enoto iz zasebnega modulaPozdravljen, svetEnd Sub

Podproces HelloWorld lahko izvedemo tudi z uporabo VBA Aplikacija.Zaženi ukaz.

V Modulu 3 pa je bil postopek GoodMorningWorld razglašen za zasebnega. Ne morete ga poklicati iz drugega modula z uporabo „običajnih“ sredstev, to je stavka Call.

Morate uporabiti Application.RunCommand za zagon zasebne podrejene enote iz drugega modula.

1234 Sub CallGoodMorning ()'zaženi zasebno pomožno enoto iz javnega modulaApplication.Run ("GoodMorningWorld")End Sub

Ko uporabljate Application.RunCommand ukaz, morate ime podprocedure postaviti med obrnjene vejice.

Če poskusimo uporabiti stavek Call za izvajanje podprocedure GoodMorningWorld, bi prišlo do napake.

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave