Spremenljivi obseg programa Excel VBA

Kazalo:

Anonim

V vseh programskih jezikih imamo spremenljivke dostopa, ki določajo, od kod je mogoče dostopati do določene spremenljivke. Excel VBA ni izjema. VBA ima tudi specifikatorje obsega. S temi specifikatorji obsega lahko nastavite vidnost/obseg spremenljivke v Excelu VBA.

V Excelu VBA imamo tri vrste podajalnikov obsega:

  1. Raven postopka
  2. Zasebno - na ravni modula
  3. Javno - raven projekta

Spremenljiv obseg ravni postopka VBA

Do spremenljivk, ki so deklarirane v podprogramu, je mogoče dostopati samo v tem postopku/funkciji. Imajo obseg postopkovne ravni. Običajno so deklarirani s ključno besedo Dim. Če je modul implicitna možnost, potem spremenljivka morda ni bila razglašena, samo neposredno uporabljena.

V spodnjem primeru imamo preskus obsega podprograma s spremenljivkama x in y. Ko zaženemo prvo podprogram, deluje odlično in natisne vsoto X in Y

Možnost Explicit Sub scopeTest () Dim x, y kot celo število 'Spremenljivka ravni postopka v VBA x = 2 y = 3 Debug.Natisni x + y End Sub Sub sum () x = 5 y = 7 Debug.Natisni x + y End Sub

Ko pa zaženete vsoto podprograma, se prikaže napaka, da spremenljivka ni razglašena. Zakaj? Ker sta X in Y zasebna za obseg postopka, vsota testa in podprograma nima dostopa do njih. Zato podmornica naleti na napako.

VBA zasebna spremenljivka- obseg ravni modula

Če želite razglasiti spremenljivko, do katere je treba dostopati v celotnem modulu, potem to spremenljivko razglasite kot zasebno na vrhu modula, pred katero koli podprogramom ali funkcijo.

Spremenljivke, deklarirane pred katero koli podprogramom v modulu, so privzeto zasebne. Tudi če jih deklarirate s ključno besedo Dim. Natančneje, pametno je uporabiti ključno besedo Zasebno.

Spodnja dva postopka sta v istem modulu, modul 1.

Možnost Explicit 'Spremenljivka ravni modula v VBA. Obe spremenljivki x in y sta zasebni za ta modul. in 'lahko dostopate s katere koli podfunkcije ali funkcije v tem modulu. Dim x Kot celo število Zasebno y Kot celo število Sub scopeTest () 'Do tega lahko dostopate iz katerega koli modula v projektu x = 2 y = 3 Debug.Natisni x + y End Sub Zasebna vsota () 'Do tega ni mogoče dostopati iz drugih modulov x = 5 y = 7 Debug.Natisni x + y End Sub 

Zgornji dve funkciji bosta delovali popolnoma v redu, saj sta spremenljivki x in y zasebni spremenljivki tega modula.

Pomembno: Zadnje vrednosti, shranjene v x in y, se ohranijo do celotnega modula. Če najprej zaženemo podobmočjeTest in ne vnesemo vrednosti x in y v vsoto in ga zaženemo, bo začetna vrednost x in y nespremenjena.

Spodnja podprogram je definirana v ločenem modulu, modulu 2. Ko poskušam dostopati do spremenljivke iz drugega modula, postopek (ali funkcija) VBA naleti na napako.

Če pa poskusim poklicati podprogram vsota iz modula 1 v modulu 2, to deluje odlično. Če želite, da bodo vaša funkcija in podprogrami zasebni za modul, uporabite ključno besedo Zasebno pred podpodjetjem in funkcijo.

Opomba:- Spremenljivke, deklarirane pred katero koli podprogramom ali funkcijo v modulu, so privzeto zasebne za modul. Lahko uporabite Zasebnoključna beseda. Toda funkcije in podprogrami so privzeto javne in do njih lahko dostopa kateri koli modul v projektu. Če želite, da so funkcije in podprogrami zasebni za modul, morate uporabiti ključno besedo Zasebno.

Javne spremenljivke- obseg na ravni projekta

Kot smo izvedeli v zgornjih primerih, so funkcija in podprogrami privzeto javne in do njih lahko dostopate iz katerega koli modula, spremenljivke pa niso. Če želite spremenljivko narediti dostopno iz katerega koli modula v Excelu VBA,uporabljamo javno ključno besedo.

Če želite v projektu razglasiti javno spremenljivko, ste jih razglasili na vrhu modula, pred katero koli funkcijo ali podprogramom z javno ključno besedo. Spodnja koda je zapisana v modulu 1.

Možnost izrecno 'Spremenljivka na ravni projekta v VBA. Javno x kot celo število javno y kot celo število Public Sub scopeTest () 'Do tega lahko dostopate iz katerega koli modula v projektu x = 2 y = 3 End Sub Private Sub sum ()' Do tega ni mogoče dostopati iz drugih modulov x = 5 y = 7 Debug.Natisni x + y End Sub

Ta podprogram je v drugem modulu, modulu 2.

Možnost Explicit Sub mul () Call scopeTest 'Call sum' ne bo delovalo, saj je zasebno za modul 1 Debug.Print x * y End Sub 

Tokrat teče odlično.
Najprej sem poklical podprogram scopeTest. Ker je obsegTest javen, se imenuje. Inicializira vrednosti x in y. Nato pomnožimo x in y. Ker ga je podprogram scopeTest inicializiral z vrednostmi 2 in 3, dobimo rezultat 6.

Torej, fantje, tako lahko uporabite specifikatorje obsega spremenljivk v Excelu za nadzor vidnosti spremenljivk, funkcij in podprogramov v projektih Excel VBA.

Dokumentacijske specifikacije VBA sem poskušal razložiti na najpreprostejši način. Upam, da je bilo razlagalno. Če imate kakršne koli dvome glede tega članka ali katerega koli drugega dvoma, povezanega z VBA, me vprašajte v spodnjem razdelku za komentarje. Vesel bom od vas.

Argumenti ByRef in ByVal | Ko se argument kot argument ByRef posreduje drugi pod -funkciji ali funkciji, se pošlje sklic na dejansko spremenljivko. Vse spremembe v kopiji spremenljivke se bodo odražale v izvirnem argumentu.

Brisanje listov brez potrditvenih pozivov z uporabo VBA v programu Microsoft Excel | Ker z VBA brišete liste, veste, kaj počnete. Excelu želite povedati, naj ne prikaže tega opozorila, in izbrišite prekleti list.

Dodajanje in shranjevanje novega delovnega zvezka z uporabo VBA v programu Microsoft Excel 2016 | V tej kodi smo najprej ustvarili sklic na predmet delovnega zvezka. In potem smo ga inicializirali z novim objektom delovnega zvezka. Prednost tega pristopa je, da lahko preprosto delate na tem novem delovnem zvezku. Tako kot shranjevanje, zapiranje, brisanje itd

Prikaz sporočila v vrstici stanja Excel VBA Statusno vrstico v Excelu lahko uporabite kot monitor kode. Ko je vaša koda VBA dolga in z VBA opravite več nalog, pogosto onemogočite posodobitev zaslona, ​​tako da zaslon ne utripa

Izklopite opozorilna sporočila z uporabo VBA v programu Microsoft Excel 2016 | Ta koda ne samo onemogoči opozoril VBA, ampak tudi poveča časovno učinkovitost kode. Poglejmo, kako.

Priljubljeni članki:

50 bližnjic v Excelu za večjo produktivnost | Poskrbite, da bo vaša naloga hitrejša. S temi 50 bližnjicami boste še hitreje delali v Excelu.

Funkcija VLOOKUP v Excelu | To je ena najpogosteje uporabljenih in priljubljenih funkcij programa Excel, ki se uporablja za iskanje vrednosti iz različnih obsegov in listov.

COUNTIF v Excelu 2016 | Štejte vrednosti s pogoji s to neverjetno funkcijo. Za štetje določene vrednosti vam ni treba filtrirati podatkov. Funkcija Countif je bistvena za pripravo vaše armaturne plošče.

Kako uporabljati funkcijo SUMIF v Excelu | To je še ena bistvena funkcija armaturne plošče. To vam pomaga povzeti vrednosti za posebne pogoje.