VBA privatni vs javni postupci (podpodručja i funkcije)

Ovaj će vodič objasniti razliku između javnih i privatnih deklaracija u VBA -i te kako specificirati module kao privatne.

Javni vs privatni podproceduri

Postupci (pod -funkcije i funkcije) mogu se proglasiti privatnim ili javnim u VBA -i. Ako su javni, to znači da biste ih mogli vidjeti iz Excel makro prozora i da ih se može pozvati s bilo kojeg mjesta u vašem VBA projektu. Ako su privatni, ne mogu se vidjeti u Excel makro prozoru i dostupni su samo za upotrebu u modulu u kojem su deklarirani (koristeći uobičajene metode, pogledajte dno ovog članka za načine pristupa privatnim procedurama iz drugih modula) .

Javne funkcije mogu se nazvati poput ugrađenih Excel funkcija na radnom listu programa Excel.

Bilješka: Varijable i konstante također mogu biti javne ili privatne.

Excel prozor makronaredbi

Prema zadanim postavkama, Excel makroi (većina VBA postupaka) vidljivi su korisnicima radne knjige u prozoru makronaredbi:

To se smatra Javnost postupci. Možete izričito definirati procedure kao javne dodavanjem “Javno” prije izraza Sub:

123 Javni pod HelloWorld ()MsgBox "Hello World"Kraj podm

Ako postupak ne definirate kao javni, pretpostavit će se da je javni.

Da biste postupak proglasili privatnim, jednostavno dodajte "Privatno" prije podnaredbe postupka:

123 Privatna podružnica HelloEveryone ()MsgBox "Pozdrav svima"Kraj podm

Drugi postupak neće biti vidljiv u prozoru Makro za korisnike programa Excel, ali se ipak može koristiti u vašem VBA kodu.

Postupci s argumentima

Podpostupci mogu imati argumente. Argumenti su ulazi u potproceduru:

123 Sub Hello (strName kao niz)MsgBox "Hello" & strNameKraj podm

Ako podprocedura ima argumente, ona se nikada neće pojaviti u prozoru makroa, bez obzira na to je li proglašena Javnom jer nema načina za deklariranje argumenata.

Funkcije se također nikada neće pojaviti u prozoru makronaredbi, bez obzira na to jesu li deklarirane kao javne.

Javne funkcije u Excelu mogu se koristiti izravno na radnom listu kao 'Korisnički definirana funkcija' (UDF). Ovo je u osnovi prilagođena formula koja se može pozvati izravno na radnom listu. Mogu se pronaći u kategoriji "Korisnički definirano" u prozoru "Umetni funkciju" ili se mogu upisati izravno u ćeliju.

VBA programiranje | Generator koda radi za vas!

Korištenje postupaka između modula u vašem VBA projektu

Javni postupci mogu se pozvati s bilo kojeg modula ili obrasca unutar vašeg VBA projekta.

Pokušaj pozivanja privatne procedure iz drugog modula rezultirat će pogreškom (Napomena: pogledajte donji dio ovog članka za zaobilaženje).

Bilješka: Javni postupci i varijable u modulima klasa ponašaju se nešto drugačije i izvan su dosega ovog članka.

Različiti moduli mogu pohraniti postupke s istim imenom, pod uvjetom da su oba privatna.

Ako dva ili više postupaka imaju isti naziv i budu proglašeni javnim, dobit ćete pogrešku pri kompajliranju ‘Otkriveno je dvosmisleno ime’ pri pokretanju koda.

Privatni moduli

Moduli su prema zadanim postavkama javni.

Da biste modul učinili privatnim, stavite sljedeću ključnu riječ na vrh modula.

1 Opcija Privatni modul

Ako neki modul proglasite privatnim, korisnici u Excelu neće biti vidljivi nikakvi postupci u modulu. Postupci funkcija neće se pojaviti u prozoru Umetanje funkcije, ali se i dalje mogu koristiti u Excelovom listu sve dok korisnik zna naziv funkcije!

Podpostupci se neće pojaviti u prozoru makronaredbi, ali će i dalje biti dostupni za upotrebu u okviru projekta VBA.

Pristup privatnom postupku iz drugog modula

Kao što je gore spomenuto, privatni postupci su „normalnim“ metodama nedostupni u drugim modulima koda. No privatnim postupcima možete pristupiti pomoću Aplikacija.Pokreni naredba dostupna u VBA.

Razmotrite sljedeća 3 modula.

Modul 2 je a Privatna Modul s a Javnost Podpostupak, dok Modul 3 jest Javnost modul s a Privatna Podpostupak.

U Modulu 1 možemo nazvati Hello World - Opcija Privatni modul na vrhu nas ne sprječava da pozovemo podpostupak - sve što treba učiniti je sakriti podproceduru u makro prozoru.

Također nam ne treba izjava Call - tu je da olakša čitanje koda.

Kod bi također mogao izgledati ovako:

1234 Sub CallHelloFromPrivate ()'nazovite podmornicu iz privatnog modulaPozdrav svijeteKraj podm

Također možemo pokrenuti podproceduru HelloWorld pomoću VBA Aplikacija.Pokreni naredba.

U Modulu 3, međutim, postupak GoodMorningWorld proglašen je privatnim. Ne možete ga nazvati iz drugog modula pomoću 'normalnih' sredstava, npr. Poziva Call.

Morate koristiti Application.RunCommand za pokretanje Privatne podmornice iz drugog modula.

1234 Sub CallGoodMorning ()'pokrenuti privatnu podmornicu iz javnog modulaApplication.Run ("GoodMorningWorld")Kraj podm

Obratite pažnju na to kada koristite Application.RunCommand naredbu, naziv podprocedure morate staviti unutar obrnutih zareza.

Ako pokušamo koristiti izraz Call za pokretanje podprocedure GoodMorningWorld, došlo bi do pogreške.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave