VBA Yksityiset vs. julkiset menettelyt (tilaukset ja toiminnot)

Tässä opetusohjelmassa selitetään ero VBA: n julkisten ja yksityisten ilmoitusten välillä ja kuinka moduulit määritetään yksityisiksi.

Julkiset vs. yksityiset alimenettelyt

Toimenpiteet (ali ja toiminnot) voidaan julistaa joko yksityisiksi tai julkisiksi VBA: ssa. Jos ne ovat julkisia, se tarkoittaa, että voit nähdä ne Excel -makroikkunasta ja ne voidaan kutsua mistä tahansa VBA -projektisi sisällä. Jos ne ovat yksityisiä, niitä ei voi nähdä Excel -makroikkunassa ja niitä voidaan käyttää vain siinä moduulissa, jossa ne on ilmoitettu (tavallisilla menetelmillä, katso tämän artikkelin alareunasta tapoja käyttää yksityisiä menettelyjä muista moduuleista) .

Julkisia toimintoja voidaan kutsua kuten Excel-laskentataulukon sisäänrakennettuja Excel-toimintoja.

Huomautus: Muuttujat ja vakiot voivat olla myös julkisia tai yksityisiä.

Excel -makroikkuna

Oletuksena Excel -makrot (useimmat VBA -toimenpiteet) näkyvät työkirjan käyttäjille makroikkunassa:

Näitä harkitaan Julkinen menettelyjä. Voit määritellä menettelyt nimenomaisesti julkisiksi lisäämällä Sub -lausekkeen eteen "Public":

123 Julkinen osa HelloWorld ()MsgBox "Hei maailma"End Sub

Jos et määritä menettelyä julkiseksi, sen oletetaan olevan julkinen.

Jos haluat julistaa menettelyn yksityiseksi, lisää yksinkertaisesti "Yksityinen" ennen menettelyn alalauseketta:

123 Yksityinen osa Hello HelloMsgBox "Hei kaikki"End Sub

Toinen menettely ei näy Mac -ikkunassa Excel -käyttäjille, mutta sitä voidaan silti käyttää VBA -koodissasi.

Menettelyt argumenttien kanssa

Alimenettelyissä voi olla argumentteja. Argumentit ovat panoksia alimenettelyyn:

123 Sub Hello (strName merkkijonona)MsgBox "Hei" & strNameEnd Sub

Jos alimenettelyllä on argumentteja, se ei koskaan näy makroikkunassa riippumatta siitä, onko se julistettu julkiseksi, koska argumentteja ei voida julistaa.

Toiminnot eivät myöskään koskaan näy makroikkunassa riippumatta siitä, onko ne julkistettu.

Excelin julkisia toimintoja voidaan käyttää suoraan laskentataulukossa käyttäjän määrittämänä funktiona (UDF). Tämä on pohjimmiltaan mukautettu kaava, joka voidaan kutsua suoraan laskentataulukkoon. Ne löytyvät "Lisää toiminto" -ikkunan "Käyttäjän määrittämä" -luokasta tai ne voidaan kirjoittaa suoraan soluun.

VBA -ohjelmointi | Koodigeneraattori toimii sinulle!

Menettelyjen käyttäminen moduulien välillä VBA -projektissasi

Julkisia menettelyjä voidaan kutsua mistä tahansa VBA -projektisi moduulista tai lomakkeesta.

Jos yrität kutsua yksityistä menettelyä toisesta moduulista, seurauksena on virhe (Huomautus: katso ohjeet tämän artikkelin alareunasta).

Huomautus: Julkiset menettelyt ja muuttujat luokkamoduuleissa toimivat hieman eri tavalla eivätkä kuulu tämän artikkelin soveltamisalaan.

Eri moduulit voivat tallentaa menettelyjä samalla nimellä, jos ne ovat molemmat yksityisiä.

Jos kahdella tai useammalla proseduurilla on sama nimi ja ne julistetaan julkisiksi, saat koodin suorittaessa virheilmoituksen "Epäselvä nimi havaittu".

Yksityiset moduulit

Oletuksena moduulit ovat julkisia.

Jos haluat tehdä moduulin yksityiseksi, laita seuraava avainsana moduulin yläosaan.

1 Vaihtoehto Yksityinen moduuli

Jos ilmoitat moduulin yksityiseksi, kaikki moduulin toiminnot eivät näy Excel -käyttäjille. Toimintatoimenpiteet eivät näy Lisää toiminto -ikkunassa, mutta niitä voidaan silti käyttää Excel -taulukossa niin kauan kuin käyttäjä tietää toiminnon nimen!

Alimenettelyt eivät näy makroikkunassa, mutta ne ovat edelleen käytettävissä VBA -projektissa.

Yksityisen menettelyn käyttäminen eri moduulista

Kuten edellä mainittiin, yksityiset menettelyt eivät ole käytettävissä muissa koodimoduuleissa "tavallisilla" menetelmillä. Voit kuitenkin käyttää yksityisiä menettelyjä käyttämällä Käyttö komento saatavilla VBA: ssa.

Harkitse seuraavia 3 moduulia.

Moduuli 2 on a Yksityinen Moduuli a Julkinen Alimenettely, kun taas moduuli 3 on Julkinen moduuli a Yksityinen Alimenettely.

Moduulissa 1 voimme kutsua Hello World - Vaihtoehto Yksityinen moduuli yläreunassa ei estä meitä kutsumasta alimenettelyä - se riittää piilottamaan alimenettelyn makroikkunaan.

Emme myöskään tarvitse soittoilmoitusta - se tekee koodin lukemisen helpommaksi.

Koodi voi myös näyttää tältä:

1234 AlipuheluHelloFromPrivate ()'soita yksityisen moduulin aliosalleHei maailmaEnd Sub

Voimme myös suorittaa HelloWorld -alimenettelyn käyttämällä VBA: ta Käyttö komento.

Moduulissa 3 GoodMorningWorld -menettely on kuitenkin julistettu yksityiseksi. Et voi kutsua sitä toisesta moduulista käyttämällä "tavallisia" keinoja eli soittoilmoitusta.

Sinun on käytettävä Application.RunCommand ajaa Private Sub toisesta moduulista.

1234 OsapuheluHyvää huomenta ()'aja yksityinen ali julkisesta moduulistaApplication.Run ("GoodMorningWorld")End Sub

Huomaa, kun käytät Application.RunCommand komento, sinun on laitettava alimenettelyn nimi käänteisten pilkkujen sisään.

Jos yritämme käyttää Call -lauseketta GoodMorningWorld -alimenettelyn suorittamiseen, tapahtuu virhe.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave