U svim programskim jezicima imamo specifikatore pristupa varijablama koji definiraju odakle se može pristupiti definiranoj varijabli. Excel VBA nije iznimka. VBA također ima specifikatore opsega. Ovi specifikatori opsega mogu se koristiti za postavljanje vidljivosti/opsega varijable u Excelu VBA.
U Excelu VBA imamo tri vrste specifikatora opsega:
- Razina postupka
- Privatno - Razina modula
- Javna - na razini projekta
VBA varijabilni opseg razine postupka VBA
Varijablama koje su deklarirane unutar potprograma, može se pristupiti samo u tom postupku/funkciji. Imaju opseg na razini postupka. Obično se deklariraju ključnom riječi Dim. Ako je modul implicitna opcija, onda varijabla možda nije deklarirana, samo se izravno koristi.
U donjem primjeru imamo test opsega potprograma koji ima varijable x i y. Kad pokrenemo prvu potprogram, ona savršeno radi i ispisuje zbroj X i Y
Opcija Explicit Sub scopeTest () Dim x, y Kao cijeli broj 'Varijabla razine postupka u VBA x = 2 y = 3 debaga. Ispis x + y End Sub Sub sum () x = 5 y = 7 Debug.Print x + y End Sub
No, kada pokrenete zbroj potprograma, on prikazuje pogrešku da varijabla nije deklarirana. Zašto? Budući da su X i Y privatni za opseg postupkaTest i zbroj potprograma nemaju pristup njima. Zbog toga podmornica nailazi na pogrešku.
VBA privatna varijabla- Opseg razine modula
Kada želite deklarirati varijablu kojoj treba pristupiti u cijelom modulu, tada deklarirate tu varijablu kao privatnu na vrhu modula, prije bilo koje podrutine ili funkcije.
Varijable deklarirane prije bilo koje potprograme u modulu su prema zadanim postavkama privatne. Čak i ako ih deklarirate ključnom riječi Dim. No, da budemo precizniji, pametno je koristiti ključnu riječ Privatno.
Dva dolje navedena postupka nalaze se u istom modulu, modulu 1.
Opcija Eksplicitno 'Varijabla razine modula u VBA. Obje varijable x i y su privatne za ovaj modul. i 'može se pristupiti s bilo koje podfunkcije ili funkcije unutar ovog modula. Dim x Kao cijeli broj Privatno y Kao cijeli broj Sub scopeTest () 'Tome se može pristupiti iz bilo kojeg modula u projektu x = 2 y = 3 Debug.Print x + y End Sub Privatni podznak () 'Tome se ne može pristupiti iz drugih modula x = 5 y = 7 Debug.Print x + y End Sub
Gore navedene dvije funkcije savršeno će se izvesti jer su varijable x i y privatne varijable ovog modula.
Važno: Zadnje vrijednosti pohranjene u x i y zadržavaju se u cijelom modulu. Ako prvo pokrenemo pod opsegTest i ne inicijaliziramo vrijednosti x i y u podzbroju i pokrenemo ga, početna vrijednost x i y bit će nepromijenjena.
Potprogram u nastavku definiran je u zasebnom modulu, modulu 2. Kad pokušavam pristupiti varijabli iz drugog modula, VBA postupak (ili funkcija) nailazi na pogrešku.
Ali ako pokušam nazvati potprogram iznos iz modula 1 u modulu 2, ovo savršeno funkcionira. Da biste svoju funkciju i podprograme učinili privatnima za modul, upotrijebite ključnu riječ Privatno prije pod -funkcije i funkcije.
Bilješka:- Varijable deklarirane prije bilo koje potprograme ili funkcije u modulu su prema zadanim postavkama privatne za modul. Možete koristiti Privatnaključna riječ. No, funkcije i potprogrami su prema zadanim postavkama javne i njima može pristupiti bilo koji modul u projektu. Da biste funkcije i podprograme učinili privatnim za modul, morate upotrijebiti ključnu riječ Privatno.
Javne varijable- Opseg na razini projekta
Kao što smo naučili u gornjim primjerima, funkcija i potprogrami su prema zadanim postavkama javne i može im se pristupiti iz bilo kojeg modula, ali varijable nisu. Da biste varijablu učinili dostupnom iz bilo kojeg modula u Excelu VBA,koristimo javnu ključnu riječ.
Za deklariranje javne varijable u projektu, deklarirali ste ih na vrhu modula, prije bilo koje funkcije ili potprograma s ključnom riječi public. Kod u nastavku je napisan u modulu 1.
Opcija Eksplicitna 'Varijabla na razini projekta u VBA -i. Javno x Kao cijeli broj Javno y Kao cijeli broj Public Sub scopeTest () 'Tome se može pristupiti iz bilo kojeg modula u projektu x = 2 y = 3 End Sub Private Sub sum ()' Tome se ne može pristupiti iz drugih modula x = 5 y = 7 Debug.Print x + y Kraj podm
Ova je potprogram u drugom modulu, modulu 2.
Opcija Explicit Sub mul () Opseg pozivaTest 'Zbir poziva' neće raditi jer je privatan za modul 1 Debug.Print x * y End Sub
Ovaj put radi savršeno.
Prvo sam nazvao opseg potprogramaTest. Budući da je scopeTest javni, naziva se. Pokreće vrijednosti x i y. Zatim množimo x i y. Budući da ju je podprogram scopeTest inicijalizirala s vrijednostima 2 i 3, rezultat smo dobili 6.
Pa da, dečki, evo kako možete koristiti specifikatore opsega varijabli u Excelu za kontrolu vidljivosti varijabli, funkcija i potprograma u Excel VBA projektima.
Pokušao sam na najjednostavniji način objasniti pristupne specifikacije VBA -e. Nadam se da je bilo objašnjenje. Ako imate bilo kakvih sumnji u vezi s ovim člankom ili bilo kojom drugom nedoumicom u vezi s VBA -om, pitajte me u donjem odjeljku komentara. Bit ću sretan ovdje od vas.
Argumenti ByRef i ByVal | Kada se argument prenese kao argument ByRef na drugu pod -funkciju ili funkciju, šalje se referenca stvarne varijable. Sve promjene napravljene u kopiji varijable bit će odražene u izvornom argumentu.
Brisanje listova bez upita za potvrdu pomoću VBA u programu Microsoft Excel | Budući da brisate listove pomoću VBA, znate što radite. Htjeli biste Excel reći da ne prikazuje ovo upozorenje i izbrisati prokleti list.
Dodavanje i spremanje nove radne knjige pomoću VBA -a u programu Microsoft Excel 2016 | U ovom kodu prvo smo stvorili referencu na objekt radne knjige. Zatim smo ga inicijalizirali novim objektom radne knjige. Prednost ovog pristupa je u tome što s ovom novom radnom knjigom možete lako raditi. Kao spremanje, zatvaranje, brisanje itd
Prikažite poruku na statusnoj traci programa Excel VBA Statusna traka u Excelu može se koristiti kao monitor koda. Kad je vaš VBA kôd dugačak i obavite nekoliko zadataka pomoću VBA -a, često onemogućujete ažuriranje zaslona kako ne biste vidjeli kako zaslon treperi
Isključivanje poruka upozorenja pomoću VBA u programu Microsoft Excel 2016 | Ovaj kôd ne samo da onemogućuje VBA upozorenja, već i povećava vremensku učinkovitost koda. Pogledajmo kako.
Popularni članci:
50 Excel prečaca za povećanje vaše produktivnosti | Budite brži u izvršavanju svojih zadataka. Ovih 50 prečaca učinit će da radite još brže na Excelu.
Funkcija VLOOKUP u Excelu | Ovo je jedna od najčešće korištenih i popularnih funkcija programa Excel koja se koristi za traženje vrijednosti iz različitih raspona i listova.
COUNTIF u Excelu 2016 | Brojte vrijednosti s uvjetima pomoću ove nevjerojatne funkcije. Ne morate filtrirati svoje podatke da biste računali određenu vrijednost. Funkcija Countif bitna je za pripremu vaše nadzorne ploče.
Kako koristiti funkciju SUMIF u Excelu | Ovo je još jedna bitna funkcija nadzorne ploče. To vam pomaže pri zbrajanju vrijednosti u posebnim uvjetima.