Kõigis programmeerimiskeeltes on meil muutuva juurdepääsu spetsifikatsioonid, mis määravad, kust saab määratud muutujale juurde pääseda. Excel VBA pole erand. Ka VBA -l on ulatuse täpsustajad. Neid ulatuse spetsifikatsioone saab kasutada muutuja nähtavuse/ulatuse määramiseks Excel VBA -s.
Exceli VBA -s on meil kolme tüüpi ulatuse täpsustajaid:
- Protseduuri tase
- Privaatne - mooduli tase
- Avalik - projekti tase
VBA protseduuri taseme muutuv ulatus
Muutujatele, mis on deklareeritud alamprogrammis, pääseb juurde ainult selles protseduuris/funktsioonis. Neil on menetlustaseme ulatus. Tavaliselt deklareeritakse need märksõnaga Dim. Kui moodul on kaudne valik, siis ei pruugi neid muutujaid deklareerida, vaid lihtsalt kasutada.
Allolevas näites on meil alamprogrammi ulatuse test, millel on muutujad x ja y. Kui käivitame esimese alamprogrammi, töötab see ideaalselt ja prindib X ja Y summa
Valik Selge alamulatusTest () Dim x, y täisarvuna Protseduuri taseme muutuja VBA -s
Kuid alamprogrammi summa käivitamisel ilmneb tõrge, et muutuja pole deklareeritud. Miks? Kuna X ja Y on protseduuri ulatuse privaatsed, pole testil ja alamprogrammi summal neile juurdepääsu. Seetõttu tekib alamveal viga.
VBA privaatne muutuja- mooduli taseme ulatus
Kui soovite deklareerida muutuja, millele on vaja juurde pääseda kogu moodulis, siis kuulutate selle muutuja mooduli ülaosas privaatseks enne alamprogrammi või funktsiooni.
Muutujad, mis on enne moodulit alamprogrammi deklareeritud, on vaikimisi privaatsed. Isegi kui deklareerite need märksõnaga Dim. Kuid kui olla konkreetne, on mõistlik kasutada märksõna Privaatne.
Allpool on toodud kaks protseduuri samas moodulis, 1. moodulis.
Valik Selge 'Mooduli taseme muutuja VBA -s. Mõlemad muutujad x ja y on selle mooduli privaatsed. ja 'saab juurde pääseda selle mooduli mis tahes alam- või funktsioonist. Dim x täisarvuna privaatne y täisarvuna Alam ulatusTest () 'Sellele pääseb juurde projekti mis tahes moodulist x = 2 y = 3 Silumine. Prindi x + y Lõpeta alam Privaatne alamsumma () "Sellele ei pääse juurde teistest moodulitest x = 5 y = 7 silumine. Print x + y End Sub
Ülaltoodud kaks funktsiooni töötavad suurepäraselt, kuna muutuja x ja y on selle mooduli privaatsed muutujad.
Oluline: Viimased x ja y salvestatud väärtused säilitatakse kuni terve moodulini. Kui käivitame kõigepealt alamtesti Testi ja ei initsialiseeri alamsummas x ja y väärtusi ja käivitame selle, siis x ja y algväärtus ei muutu.
Allolev alamprogramm on määratletud eraldi moodulis, moodulis 2. Kui proovin muutujale juurde pääseda teisest moodulist, jookseb VBA protseduur (või funktsioon) tõrkesse.
Aga kui ma püüan alamprogrammi kutsuda summa alates moodulist 1 moodulis 2, töötab see ideaalselt. Kui soovite muuta oma funktsiooni ja alamprogrammid mooduli privaatseks, kasutage alam- ja funktsiooni ees märksõna Privaatne.
Märge:- Muutujad, mis on deklareeritud enne mooduli alamprogrammi või funktsiooni, on vaikimisi moodulile privaatsed. Võite kasutada Privaatnemärksõna. Kuid funktsioonid ja alamprogrammid on vaikimisi avalikud ja neile pääseb juurde iga projekti mooduliga. Funktsioonide ja alamprogrammide muutmiseks mooduli privaatseks peate kasutama privaatset märksõna.
Avalikud muutujad- projekti taseme ulatus
Nagu ülaltoodud näidetest teada saime, on funktsioon ja alamprogrammid vaikimisi avalikud ning neile pääseb juurde igast moodulist, kuid muutujatele mitte. Muutuja kättesaadavaks tegemiseks mis tahes moodulist Excel VBA -s,kasutame avalikku märksõna.
Avaliku muutuja deklareerimiseks projektis olete need deklareerinud mooduli ülaosas, enne mis tahes funktsiooni või alamprogrammi avaliku märksõnaga. Allolev kood on kirjutatud moodulis 1.
Valik Selge 'Projekti taseme muutuja VBA -s. Avalik x täisarvuna Avalik y täisarvuna Avalik alam ulatusTest () 'Sellele pääseb juurde projekti mis tahes moodulist x = 2 y = 3 End Sub Private Sub sum ()' Sellele ei pääse juurde teistest moodulitest x = 5 y = 7 Silumine. y End Sub
Ja see alamprogramm on teises moodulis, moodulis 2.
Valik Selgesõnaline sub mul () Kõne ulatus Testi 'Kõne summa' see ei tööta, kuna see on mooduli 1 privaatne silumine. Prindi x * y Lõpeta alam
Seekord töötab see ideaalselt.
Esiteks kutsusin alamprogrammi ulatustesti. Kuna ulatustesti on avalik, nimetatakse seda. See lähtestab x ja y väärtused. Järgmisena korrutame x ja y. Kuna alamprogramm rangeTest oli selle lähtestanud väärtustega 2 ja 3, saame tulemuseks 6.
Nii et jah, poisid, nii saate Exceli muutuja ulatuse spetsifikatsioone kasutada muutujate, funktsioonide ja alamprogrammide nähtavuse kontrollimiseks Exceli VBA projektides.
Püüdsin selgitada VBA juurdepääsu spetsifikatsioone võimalikult lihtsal viisil. Loodan, et see oli selgitav. Kui teil on selle artikli või mõne muu VBAga seotud kahtluse osas kahtlusi, küsige minult allpool kommentaaride osas. Mul on hea meel teie poolt siia tulla.
ByRef ja ByVal argumendid | Kui argument edastatakse ByRef argumendina teisele alam- või funktsioonile, saadetakse tegeliku muutuja viide. Kõik muutuja koopiasse tehtud muudatused kajastuvad algses argumendis.
Lehtede kustutamine ilma kinnitusteta Microsoft Excelis VBA abil | Kuna kustutate lehti VBA abil, teate, mida teete. Sooviksite Excelil seda hoiatust mitte kuvada ja neetud leht kustutada.
Uue töövihiku lisamine ja salvestamine Microsoft Excel 2016 VBA abil | Selles koodis lõime esmalt viite töövihiku objektile. Ja siis vormistasime selle uue töövihikuobjektiga. Selle lähenemisviisi eeliseks on see, et saate selle uue töövihikuga hõlpsalt toiminguid teha. Nagu salvestamine, sulgemine, kustutamine jne
Sõnumi kuvamine Exceli VBA olekuribal Exceli olekuriba saab kasutada koodimonitorina. Kui teie VBA -kood on pikk ja teete VBA -ga mitut ülesannet, keelate sageli ekraani värskendamise, nii et te ei näe ekraani vilkumist
Hoiatusteadete väljalülitamine Microsoft Excel 2016 VBA abil | See kood mitte ainult ei luba VBA hoiatusi, vaid suurendab ka koodi ajakasutust. Vaatame, kuidas.
Populaarsed artiklid:
50 Exceli otseteed tootlikkuse suurendamiseks | Saa oma ülesandega kiiremini hakkama. Need 50 otseteed aitavad teil Excelis veelgi kiiremini töötada.
Funktsioon VLOOKUP Excelis | See on üks enim kasutatud ja populaarsemaid Exceli funktsioone, mida kasutatakse erinevate vahemike ja lehtede väärtuse otsimiseks.
COUNTIF Excelis 2016 | Loendage väärtused tingimustega, kasutades seda hämmastavat funktsiooni. Te ei pea konkreetse väärtuse loendamiseks oma andmeid filtreerima. Countif funktsioon on armatuurlaua ettevalmistamisel hädavajalik.
Funktsiooni SUMIF kasutamine Excelis | See on veel üks armatuurlaua oluline funktsioon. See aitab teil teatud tingimustel väärtusi kokku võtta.