„Excel VBA“ kintamoji apimtis

Turinys:

Anonim

Visose programavimo kalbose mes turime kintamosios prieigos specifikatorius, kurie apibrėžia, iš kur galima pasiekti apibrėžtą kintamąjį. „Excel VBA“ nėra išimtis. VBA taip pat turi apimties specifikacijas. Šiuos apimties specifikatorius galima naudoti norint nustatyti kintamojo matomumą/apimtį „Excel VBA“.

„Excel VBA“ turime trijų tipų apimties specifikatorius:

  1. Procedūros lygis
  2. Privatus - modulio lygis
  3. Viešas - projekto lygis

VBA procedūros lygio kintama apimtis

Kintamuosius, kurie yra paskelbti paprogramėje, galima pasiekti tik tos procedūros/funkcijos metu. Jie turi procedūros lygio apimtį. Paprastai jie deklaruojami naudojant Dim raktinį žodį. Jei modulis yra numanomas pasirinkimas, tada kintamasis gali būti nedeklaruotas, tiesiog naudojamas tiesiogiai.

Žemiau pateiktame pavyzdyje turime paprogramės apimties testą, kurio kintamieji yra x ir y. Kai vykdome pirmąją paprogramę, ji puikiai veikia ir spausdina X ir Y sumą

Parinktis Aiškus papildomas diapazonasTest () Dim x, y kaip sveikasis skaičius „Procedūros lygio kintamasis VBA x = 2 y = 3 derinimas. Spausdinimas x + y pabaiga Sub subsumma () x = 5 y = 7 derinimas. Spausdinimas x + y pabaiga

Bet kai paleidžiate paprogramės sumą, atsiranda klaida, kad kintamasis nėra deklaruojamas. Kodėl? Kadangi X ir Y yra privatūs procedūros apimties, testas ir paprogramės suma neturi prieigos prie jų. Taigi antrinė dalis patiria klaidą.

VBA privatus kintamasis- modulio lygio apimtis

Jei norite paskelbti kintamąjį, prie kurio reikia prieiti visame modulyje, prieš kieno nors paprogramę ar funkciją, tą kintamąjį paskelbkite privačiu modulio viršuje.

Kintamieji, paskelbti prieš bet kurią modulio paprogramę, pagal numatytuosius nustatymus yra privatūs. Net jei deklaruojate juos naudodami Dim raktinį žodį. Tačiau norėdami būti konkretūs, protinga naudoti asmeninį raktinį žodį.

Toliau pateiktos dvi procedūros yra tame pačiame modulyje, 1 modulyje.

Parinktis „Aiškus“ modulio lygio kintamasis VBA. Abu kintamieji x ir y yra privatūs šiam moduliui. ir “galima pasiekti iš bet kurio šio modulio poskyrio ar funkcijos. Dim x As Integer Private ir kaip Integer Sub -apimtisTest () 'Tai galima pasiekti iš bet kurio projekto modulio x = 2 y = 3 Derinimas. Spausdinti x + y Pabaiga Privati ​​suma () "Tai negalima pasiekti iš kitų modulių x = 5 y = 7 derinimas. Spausdinti x + y Pabaiga 

Aukščiau pateiktos dvi funkcijos veiks puikiai, nes kintamasis x ir y yra šio modulio privatūs kintamieji.

Svarbu: Paskutinės x ir y išsaugotos reikšmės išsaugomos iki viso modulio. Jei pirmiausia vykdysime antrinį apimties testą ir neinicijuosime x ir y reikšmių sub sumoje ir ją paleisime, tada pradinė x ir y reikšmė nesikeis.

Žemiau pateikta paprogramė yra apibrėžta atskirame modulyje, 2 modulyje. Kai bandau pasiekti kintamąjį iš kito modulio, VBA procedūra (arba funkcija) patenka į klaidą.

Bet jei bandysiu pavadinti paprogramę suma iš 2 modulio 1 modulio tai veikia puikiai. Jei norite, kad jūsų funkcija ir paprogramės būtų privačios moduliui, prieš antrinį elementą ir funkciją naudokite raktinį žodį Privatus.

Pastaba:- Kintamieji, paskelbti prieš bet kurią modulio paprogramę ar funkciją, pagal nutylėjimą yra privatūs. Galite naudoti Privatusraktinis žodis. Tačiau funkcijos ir paprogramės pagal numatytuosius nustatymus yra viešos ir jas gali pasiekti bet kuris projekto modulis. Norėdami, kad funkcijos ir paprogramės būtų privačios moduliui, turite naudoti asmeninį raktinį žodį.

Viešieji kintamieji- projekto lygio apimtis

Kaip sužinojome aukščiau pateiktuose pavyzdžiuose, funkcija ir paprogramės pagal numatytuosius nustatymus yra viešos ir jas galima pasiekti iš bet kurio modulio, tačiau kintamieji nėra. Kad kintamasis būtų pasiekiamas iš bet kurio „Excel VBA“ modulio,mes naudojame viešą raktinį žodį.

Jei norite paskelbti viešąjį projekto kintamąjį, jį deklaravote modulio viršuje, prieš bet kurią funkciją ar paprogramę su viešuoju raktažodžiu. Žemiau pateiktas kodas parašytas 1 modulyje.

Parinktis „Aiškus“ projekto lygio kintamasis VBA. Viešas x kaip sveikasis skaičius Viešas y kaip sveikasis skaičius Public Sub ulatusTest () 'Tai galima pasiekti iš bet kurio projekto modulio x = 2 y = 3 End Sub Private Sub sum ()' Tai negalima pasiekti iš kitų modulių x = 5 y = 7 Derinimas. Spausdinti x + y Pabaiga Sub

Ir ši paprograma yra kitame modulyje, 2 modulyje.

Parinktis „Explicit Sub mul“ () Skambučių sritis Išbandykite „Skambučio sumą“, ji neveiks, nes ji yra privati ​​1 moduliui. Derinimas. Spausdinti x * y Pabaiga 

Šį kartą jis veikia puikiai.
Pirmiausia aš pavadinau paprogramės apimties testą. Kadangi „scaleTest“ yra viešas, jis vadinamas. Jis inicijuoja x ir y reikšmes. Toliau dauginame x ir y. Kadangi paprogramė „scaleTest“ ją inicijavo 2 ir 3 reikšmėmis, gauname 6 rezultatą.

Taigi taip, vaikinai, taip galite naudoti kintamųjų apimties specifikatorius „Excel“, kad valdytumėte kintamųjų, funkcijų ir paprogramių matomumą „Excel VBA“ projektuose.

Bandžiau paprasčiausiu būdu paaiškinti VBA prieigos nurodymus. Tikiuosi, kad tai buvo aiškinama. Jei turite kokių nors abejonių dėl šio straipsnio ar kitų su VBA susijusių abejonių, paklauskite manęs komentarų skiltyje žemiau. Aš būsiu laimingas čia iš tavęs.

ByRef ir ByVal argumentai | Kai argumentas perduodamas kaip ByRef argumentas kitam poskyriui ar funkcijai, siunčiama faktinio kintamojo nuoroda. Bet kokie kintamojo kopijos pakeitimai atsispindės pradiniame argumente.

Ištrinkite lapus be patvirtinimo raginimų naudodami „Microsoft Excel“ VBA | Kadangi naikinate lapus naudodami VBA, žinote, ką darote. Norite pasakyti „Excel“ nerodyti šio įspėjimo ir ištrinti prakeiktą lapą.

Pridėkite ir išsaugokite naują darbaknygę naudodami VBA „Microsoft Excel 2016“ | Šiame kode pirmiausia sukūrėme nuorodą į darbaknygės objektą. Ir tada mes jį inicijavome naudodami naują darbo knygos objektą. Šio metodo pranašumas yra tas, kad galite lengvai atlikti operacijas su šia nauja darbaknyge. Kaip išsaugoti, uždaryti, ištrinti ir pan

Rodyti pranešimą „Excel“ VBA būsenos juostoje „Excel“ būsenos juosta gali būti naudojama kaip kodo monitorius. Kai jūsų VBA kodas yra ilgas ir atliekate kelias užduotis naudodami VBA, dažnai išjungiate ekrano atnaujinimą, kad nematytumėte to ekrano mirgėjimo

Išjunkite įspėjamuosius pranešimus naudodami VBA programoje „Microsoft Excel 2016“ | Šis kodas ne tik išjungia VBA įspėjimus, bet ir padidina kodo laiko efektyvumą. Pažiūrėkime, kaip.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų leis dar greičiau dirbti naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint suskaičiuoti konkrečią vertę, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.