VBA privaatsed vs avalikud protseduurid (alam- ja funktsioonid)

See õpetus selgitab VBA avalike ja privaatsete deklaratsioonide erinevust ning moodulite privaatseks määramist.

Avalikud vs eraviisilised alamprotseduurid

Protseduurid (alam- ja funktsioonid) saab VBA -s kuulutada kas privaatseks või avalikuks. Kui need on avalikud, tähendab see, et näete neid Exceli makroaknast ja neile saab helistada kõikjal teie VBA projekti raames. Kui need on privaatsed, ei saa neid Exceli makroaknas näha ja neid saab kasutada ainult selles moodulis, milles need on deklareeritud (tavaliste meetodite abil vaadake teiste moodulite privaatprotseduuridele juurdepääsu saamiseks selle artikli alt) .

Avalikke funktsioone saab nimetada nagu Exceli töölehe sisseehitatud Exceli funktsioone.

Märge: Muutujad ja konstandid võivad olla ka avalikud või privaatsed.

Exceli makroaken

Vaikimisi on Exceli makro (enamik VBA protseduure) töövihiku kasutajatele makroaknas nähtav.

Neid kaalutakse Avalik protseduure. Protseduurid saate selgesõnaliselt määratleda avalikena, lisades alamlause ette „Avalik”:

123 Avalik alam HelloWorld ()MsgBox "Tere maailm"End Sub

Kui te ei määra protseduuri avalikuks, loetakse see avalikuks.

Protseduuri privaatseks kuulutamiseks lisage protseduuri alamavalduse ette lihtsalt „Privaatne”:

123 Privaatne alam HelloEveryone ()MsgBox "Tere kõigile"End Sub

Teine protseduur pole Exceli kasutajatele makroaknas nähtav, kuid seda saab siiski kasutada teie VBA -koodis.

Protseduurid argumentidega

Alamprotseduuridel võib olla argumente. Argumendid on alamprotseduuri sisendid:

123 Sub Hello (strName stringina)Sõnumikast "Tere" & strNameEnd Sub

Kui alamprotseduuril on argumente, ei ilmu see kunagi makroaknasse, olenemata sellest, kas see on avalik, kuna argumente pole võimalik deklareerida.

Funktsioone ei kuvata kunagi ka makroaknas, olenemata sellest, kas need on avalikud.

Exceli avalikke funktsioone saab kasutada otse töölehel kasutaja määratud funktsioonina (UDF). See on põhimõtteliselt kohandatud valem, mida saab töölehel otse kutsuda. Neid võib leida akna „Lisa funktsioon” kategooriasse „Kasutaja määratud” või neid saab otse lahtrisse sisestada.

VBA programmeerimine | Koodigeneraator töötab teie jaoks!

Protseduuride kasutamine moodulite vahel oma VBA projektis

Avalikke protseduure saab kutsuda teie VBA projekti mis tahes moodulist või vormist.

Kui proovite kutsuda privaatset protseduuri teisest moodulist, ilmneb tõrge (märkus: vaadake selle artikli altpoolt).

Märge: Avalikud protseduurid ja muutujad klassimoodulites käituvad veidi erinevalt ja jäävad käesoleva artikli reguleerimisalast välja.

Erinevad moodulid võivad salvestada sama nimega protseduure, kui need on mõlemad privaatsed.

Kui kahel või enamal protseduuril on sama nimi ja need kuulutatakse avalikuks, kuvatakse koodi käivitamisel kompileerimisviga „Tuvastati mitmetähenduslik nimi”.

Privaatsed moodulid

Vaikimisi on moodulid avalikud.

Mooduli privaatseks muutmiseks panete mooduli ülaossa järgmise märksõna.

1 Valik Privaatmoodul

Kui kuulutate mooduli privaatseks, ei näe Exceli kasutajad kõiki selle mooduli protseduure. Funktsiooniprotseduure ei kuvata funktsiooni lisamise aknas, kuid neid saab siiski Exceli lehel kasutada seni, kuni kasutaja teab funktsiooni nime!

Alamprotseduure ei kuvata makroaknas, kuid neid saab siiski kasutada VBA projekti raames.

Juurdepääs privaatsele menetlusele erinevast moodulist

Nagu eespool mainitud, ei ole privaatsed protseduurid teistes koodimoodulites tavapäraste meetoditega juurdepääsetavad. Privaatsetele protseduuridele pääsete aga juurde, kasutades Rakendus. Käivita käsk on saadaval VBA -s.

Kaaluge järgmisi 3 moodulit.

Moodul 2 on a Privaatne Moodul koos a Avalik Alamprotseduur, samas kui moodul 3 on Avalik moodul koos a Privaatne Alamprotseduur.

Moodulis 1 võime helistada Hello World - Valik Privaatmoodul ülaosas ei takista meil alamprotseduuri kutsumist - piisab vaid alamprotseduuri peitmisest makroaknas.

Me ei vaja ka kõneavaldust - see on koodi lihtsamaks lugemiseks.

Kood võib välja näha ka järgmine:

1234 AlamkõneHelloFromPrivate ()"helistage alammoodulile privaatsest moodulistTere, MaailmEnd Sub

Saame käivitada ka HelloWorldi alamprotseduuri, kasutades VBA -d Rakendus. Käivita käsk.

Moodulis 3 on aga GoodMorningWorld protseduur kuulutatud privaatseks. Te ei saa sellele helistada teisest moodulist, kasutades tavalisi vahendeid, st kõne väljavõtet.

Sa pead kasutama Rakendus. Käivita käsk privaatse alamprogrammi käivitamiseks teisest moodulist.

1234 AlamkõneHoodMorning ()"käivitage avaliku mooduli privaatne alamApplication.Run ("GoodMorningWorld")End Sub

Pange tähele, kui kasutate Rakendus. Käivita käsk käsku, peate alamprotseduuri nime ümberpööratud koma sisse panema.

Kui proovime GoodMorningWorldi alamprotseduuri käivitamiseks kasutada kõnelauset, ilmneb tõrge.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave