Exceli VBA alamprogramm: kuidas VBA-s alam helistada näitega
⚡ Nutikas kokkuvõte
Exceli VBA alamprogramm rühmitab koodiploki, mis täidab ülesande ilma väärtust tagastamata. See leht käsitleb nimetamisreegleid, alamprogrammi süntaksit, alamprogrammi kutsumist käsunupu abil ja seda, kuidas alamprogramm erineb funktsioonist.

Mis on VBA alamprogramm?
A Alamprogramm VBA-s on kooditükk, mis täidab konkreetset koodis kirjeldatud ülesannet, kuid ei tagasta tulemust ega väärtust. Alamprogramme kasutatakse suurte kooditükkide jagamiseks väikesteks hallatavateks osadeks. Alamprogramme saab igal pool programmis mitu korda tagasi kutsuda.
Oletame, et olete loonud kasutajaliidese tekstikastidega kasutaja sisendandmete vastuvõtmiseks. Saate luua alamprogrammi, mis tühjendab tekstikastide sisu. VBA kõne alamprogramm on sellise stsenaariumi korral asjakohane, kuna te ei soovi tulemusi tagastada.
Miks kasutada alamprogramme
- Jagage kood väikeseks hallatavaks koodiks: Keskmisel arvutiprogrammil on tuhandeid ja tuhandeid lähtekoodi ridu. See toob kaasa keerukuse. Alamprogrammid aitavad seda probleemi lahendada, jagades programmi väikesteks hallatavateks kooditükkideks.
- Code korduvkasutus. Oletame, et teil on programm, mis vajab juurdepääsu andmebaasile, peaaegu kõik programmi aknad peavad andmebaasiga suhtlema. Nende akende jaoks eraldi koodi kirjutamise asemel saate luua funktsiooni, mis käsitleb kõiki andmebaasi interaktsioone. Seejärel saate sellele helistada mis tahes aknast.
- Alamprogrammid ja funktsioonid on isedokumenteeruvad. Oletame, et teil on funktsioon arvutadaLoanInterest ja teine, mis ütleb connectToDatabase. Lihtsalt alamprogrammi/funktsiooni nime vaadates saab programmeerija öelda, mida programm teeb.
Enne selle kirjutamist eeldab kompilaator, et nimi järgib lühikest reeglite kogumit.
Alamprogrammide ja funktsioonide nimetamise reeglid
Alamprogrammide ja funktsioonide kasutamiseks on kehtestatud reeglid, mida tuleb järgida.
- Alamprogrammi või VBA kutsefunktsiooni nimi ei tohi sisaldada tühikut
- Exceli VBA kõne alam- või funktsiooni nimi peaks algama tähe või alakriipsuga. See ei saa alata numbri ega erimärgiga
- Alamprogrammi või funktsiooni nimi ei saa olla märksõna. Märksõna on sõna, millel on eriline tähendus VBA. Sõnad nagu privaatne, alam, funktsioon ja lõpp jne on kõik märksõnade näited. Kompilaator kasutab neid konkreetsete ülesannete jaoks.
Kui valitud on kehtiv nimi, järgib deklaratsioon ise fikseeritud mustrit.
VBA alamprogrammi süntaks
Selle näite järgimiseks peate lubama Excelis vahekaardi Arendaja. Kui te ei tea, kuidas vahekaarti Arendaja lubada, lugege õpetust edasi VBA juhtelemendid Excelis
SIIN süntaksis,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Süntaksi selgitus
| Code | tegevus |
|---|---|
|
|
|
|
|
|
Järgmine alamprogramm aktsepteerib ees- ja perekonnanime ning kuvab need sõnumikastis.
Nüüd hakkame selle alamprotseduuri programmeerima ja täitma. Vaatame seda.
Kuidas VBA-s Subi helistada
Allpool on samm-sammult VBA-s Sub-i helistamise protsess:
- Kujundage kasutajaliides ja määrake kasutaja juhtelementide omadused.
- Lisage alamprogramm
- Kirjutage alamprogrammi kutsuva käsunupu klikisündmuse kood
- Testige rakendust
Step 1) Kasutajaliides
Kujundage kasutajaliides nii, nagu on näidatud alloleval pildil.
Määrake järgmised omadused. Atribuudid, mida me seadistame:
| S / N | Kontroll | vara | Väärtus |
|---|---|---|---|
| 1 | CommandButton1 | Eesnimi | btnDisplayFullName |
| 2 | Pealkiri | Täisnimi alamprogramm |
Teie liides peaks nüüd välja nägema järgmine.
Step 2) Lisa alamprogramm
- Koodiakna avamiseks vajutage Alt + F11
- Lisage järgmine alamprogramm
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
SIIN koodis,
| Code | Meetmete |
|---|---|
|
|
|
|
|
|
Step 3) Alamprogrammi kutsumine
Alamprogrammi kutsumine käsunupu kliki sündmusest.
- Paremklõpsake käsurea nupul, nagu on näidatud alloleval pildil. Valige Vaade Code.
- Avaneb koodiredaktor
Lisage käsunupu btnDisplayFullName klõpsamise sündmuse jaoks koodiredaktorisse järgmine kood.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Teie koodiaken peaks nüüd välja nägema järgmine
Salvestage muudatused ja sulgege koodiaken.
Step 4) Koodi testimine
Lülitage arendaja tööriistaribal kujundusrežiim välja. Nagu allpool näidatud.
Step 5) Klõpsake käsunuppu 'FullName Subrutiin'.
Saate järgmised tulemused
Nupp on mugav, aga see pole ainus viis alamprogrammi käivitamiseks ja arenduse ajal on see harva kiireim.
Kuidas käivitada alamrutiini ilma nuputa
Koodi kirjutamise ajal raiskab juhtelemendi lisamine lehele ainult alamprogrammi testimiseks aega. VBA pakub nelja muud viisi selle käivitamiseks ja igaüks neist sobib arendustsükli erinevasse hetke.
- Vajuta redaktoris F5: Asetage kursor Sub-i sisse ja vajutage F5. See käivitub kohe. See toimib ainult siis, kui Sub ei võta argumente vastu, kuna VBA-l pole väärtusi, mida esitada.
- Sammub läbi F8-ga: Sama seeria, üks rida korraga, nii et saate jälgida iga muutuja muutust aknas Locals. Kasutage seda siis, kui tulemus on vale ja peate nägema, kus see asub.
- Kasutage dialoogiboksi Makrod: Klõpsake menüü Arendaja nuppu Makrod, valige nimi ja klõpsake nuppu Käivita. Selles loendis kuvatakse ainult argumentideta avalikud alamobjektid, mistõttu abiobjektid deklareeritakse tavaliselt privaatseks.
- Kutsu see teiselt alamfoorumilt: Seda meetodit kasutatakse iga argumente vastu võtva Sub-i puhul ja sellele tugineb ülaltoodud käsunupp.
Viimasel valikul on kaks aktsepteeritud vormi. Nime ja sellele järgnevate paljaste argumentide kirjutamine toimib, nagu ka selgesõnaline märksõna Call, kuid nurksulguri reegel on nende vahel erinev.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Mõlemad read teevad täpselt sama asja. Kahe vormi segamine, st nurksulgude kirjutamine ilma märksõnata Call, on kõige levinum kompileerimisvea „Expected: ="” põhjus, kui Sub võtab vastu rohkem kui ühe argumendi.
Alam- ja funktsiooni erinevus VBA-s
VBA-s on kaks protseduuritüüpi: Sub ja Function ning algajad valivad sageli vale. Otsustav küsimus on lihtne: kas kutsuv kood vajab tagasiväärtust?
| tunnusjoon | alla | funktsioon |
|---|---|---|
| Tagastab väärtuse | Ei | Jah, funktsiooni nimele määratud |
| Deklareeritud koos | Sub … End Sub | Funktsioon … Lõppfunktsioon |
| Nimetatakse kui | Avaldus omal real | Avaldise osa, näiteks x = myFunc(2) |
| Kasutatav töölehe lahtris | Ei | Jah, kasutaja määratletud funktsioonina |
| Tüüpiline kasutamine | Lehe vormindamine, sisendite tühjendamine, teate kuvamine | Kogusumma arvutamine, väärtuse teisendamine, andmete otsimine |
Kasutage alamliigendit (Sub), kui kood mõjutab töövihikut, ja alamliigendit (Alam). VBA funktsioon kui kood annab vastuse, mille midagi muud tarbib.






