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.

  • 📦 Määratlus: Alamprogramm täidab kindla ülesande ega tagasta seda kutsunud koodile mingit väärtust.
  • ♻️ Korduvkasutatavus: Ühte alamprogrammi saab projektis ükskõik millisest kohast mitu korda kutsuda.
  • 🔤 Nime andmise reeglid: Nimi ei sisalda tühikuid, algab tähe või alakriipsuga ja ei ole kunagi VBA märksõna.
  • 🧾 süntaksit: Private Sub name(ByVal arg As String) avab ploki ja End Sub sulgeb selle.
  • 🖱️ Helistamine: Käskluse nupu klõpsamise sündmus kutsub alamprogrammi ja edastab selle argumendid.
  • ▶ ️ Otse jookseb: F5, dialoogiboks Makrod või märksõna Kutsu käivitavad kõik alamprogrammi ilma nuputa.
  • 🔁 Alam- või funktsioon: Valige funktsioon, kui väärtus tuleb tagastada, vastasel juhul valige alamväärtus.

Exceli VBA alamprogramm

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
  • "Privaatne alam minuSubRoutine (…)"
  • Siin kasutatakse märksõna "Sub" alamprogrammi "mySubRoutine" deklareerimiseks ja alamprogrammi keha käivitamiseks.
  • Alamprogrammi ulatuse määramiseks kasutatakse märksõna Private
  • "ByVal arg1 kui string, ByVal arg2 kui string":
  • See deklareerib kaks parameetrit stringi andmetüübi nimi arg1 ja arg2
  • "Lõpeta sub"
  • "End Sub" kasutatakse alamprogrammi põhiosa lõpetamiseks

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:

  1. Kujundage kasutajaliides ja määrake kasutaja juhtelementide omadused.
  2. Lisage alamprogramm
  3. Kirjutage alamprogrammi kutsuva käsunupu klikisündmuse kood
  4. Testige rakendust

Step 1) Kasutajaliides

Kujundage kasutajaliides nii, nagu on näidatud alloleval pildil.

Kuidas VBA-s Subi helistada

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.

Kuidas VBA-s Subi helistada

Step 2) Lisa alamprogramm

  1. Koodiakna avamiseks vajutage Alt + F11
  2. Lisage järgmine alamprogramm
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String)
    MsgBox firstName & " " & lastName
End Sub

SIIN koodis,

Code Meetmete
  • „Privaatne alamkuvaFullName(…)”
  • See deklareerib privaatse alamprogrammi displayFullName, mis aktsepteerib kahte stringiparameetrit.
  • “ByVal firstName As String, ByVal lastName As String”
  • See deklareerib kaks parameetrimuutujat eesnimi ja perekonnanimi
  • SõnumBox eesnimi & " " & perekonnanimi"
  • See kutsub MsgBox sisseehitatud funktsioon sõnumikasti kuvamiseks. Seejärel edastab see parameetritena muutujad 'firstName' ja 'lastName'.
  • Ampersandi "&" kasutatakse kahe muutuja ühendamiseks ja nende vahele tühja ruumi lisamiseks.

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

Kuidas VBA-s Subi helistada

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

Kuidas VBA-s Subi helistada

Salvestage muudatused ja sulgege koodiaken.

Step 4) Koodi testimine

Lülitage arendaja tööriistaribal kujundusrežiim välja. Nagu allpool näidatud.

Kuidas VBA-s Subi helistada

Step 5) Klõpsake käsunuppu 'FullName Subrutiin'.

Saate järgmised tulemused

Kuidas VBA-s Subi helistada

Laadige alla ülaltoodud Exceli fail Code

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.

KKK

Privaatset alammoodulit (Private Sub) saab kutsuda ainult selle mooduli seest, mis seda deklareerib. Avalik alammoodul (Public Sub) on nähtav kõigile projekti moodulitele ja see on ainus tüüp, mis kuvatakse makrode dialoogiboksis.

ByVal edastab koopia, seega alamprogramm ei saa kutsuja muutujat muuta. ByRef edastab muutuja enda, seega on kõik muudatused kutsujale nähtavad. ByRef on vaikeväärtus, kui kumbagi märksõna pole kirjutatud.

Kasutage Exit Sub lauset. See peatab protseduuri selles punktis ja tagastab juhtimise sellele, millele seda kutsuti, mis on kasulik varajaseks lahkumiseks, kui valideerimistest ebaõnnestub.

Jah. Kleebi makro ja tehisintellekti abiline grupeerib seotud read, pakub igale uuele alamüksusele kirjeldava nime ja kirjutab algse makro ümber lühikese kõnede jadana. Testi tulemust töövihiku koopia peal.

Jah. Sisestage veatekst ja kutsuv rida ning tehisintellekti assistent tuvastab põhjused, näiteks märksõna Call kasutamata sulgudes olevad nurksulud, vale argumentide arv või mittevastav andmetüüp, ning seejärel kuvab parandatud rea.

Võta see postitus kokku järgmiselt: