Excel VBA potprogram: Kako pozvati Sub u VBA s primjerom

⚡ Pametni sažetak

Excel VBA potprogram grupira blok koda koji izvršava zadatak bez vraćanja vrijednosti. Ova stranica pokriva pravila imenovanja, sintaksu funkcije Sub, pozivanje funkcije Sub iz naredbenog gumba i kako se funkcija Sub razlikuje od funkcije.

  • ???? Definicija: Podprogram izvršava određeni zadatak i ne vraća nikakvu vrijednost kodu koji ga je pozvao.
  • ♻️ Ponovno korištenje: Jedna podrutina može se pozvati više puta s bilo kojeg mjesta u projektu.
  • 🔤 Pravila imenovanja: Naziv ne sadrži razmake, počinje slovom ili podcrtom i nikada nije VBA ključna riječ.
  • 🧾 Sintaksa: Privatni podnaziv (ByVal arg As String) otvara blok, a End Sub ga zatvara.
  • 🖱️ Pozivanje: Događaj klika na naredbeni gumb poziva potprogram i prosljeđuje njegove argumente.
  • ▶ ️ Izravno trčanje: F5, dijalog Makroi ili ključna riječ Pozovi pokreću potprogram bez gumba.
  • 🔁 Podfunkcija ili funkcija: Odaberite Funkciju kada se vrijednost mora vratiti, u suprotnom odaberite Podvrstu.

Excel VBA potprogram

Što je potprogram u VBA?

A Potprogram u VBA je dio koda koji izvršava određeni zadatak opisan u kodu, ali ne vraća rezultat ili vrijednost. Potprogrami se koriste za rastavljanje velikih dijelova koda na male dijelove kojima se može upravljati. Potprogrami se mogu pozvati više puta s bilo kojeg mjesta u programu.

Recimo da ste kreirali korisničko sučelje s tekstualnim okvirima za prihvaćanje korisničkih podataka za unos. Možete stvoriti potprogram koji briše sadržaj tekstnih okvira. Potprogram VBA poziva prikladan je u takvom scenariju jer ne želite vratiti nikakve rezultate.

Zašto koristiti potprograme

  • Rastavite kod na mali upravljivi kod: Prosječan računalni program ima tisuće i tisuće redaka izvornog koda. Ovo uvodi složenost. Potprogrami pomažu u rješavanju ovog problema rastavljanjem programa na male upravljive dijelove koda.
  • Code ponovna upotrebljivost. Recimo da imate program koji treba pristupiti bazi podataka, gotovo svi prozori u programu morat će komunicirati s bazom podataka. Umjesto pisanja zasebnog koda za te prozore, možete stvoriti funkciju koja obrađuje sve interakcije s bazom podataka. Zatim ga možete nazvati iz bilo kojeg prozora koji želite.
  • Potprogrami i funkcije se sami dokumentiraju. Recimo da imate funkciju CalculateLoanInterest i drugu koja kaže ConnectToDatabase. Samo gledajući naziv potprograma/funkcije, programer će moći reći što program radi.

Prije nego što ga napiše, kompajler očekuje da ime slijedi kratak skup pravila.

Pravila imenovanja potprograma i funkcija

Za korištenje potprograma i funkcija postoji niz pravila kojih se morate pridržavati.

  • Naziv potprograma ili funkcije VBA poziva ne smije sadržavati razmak
  • Excel VBA Call Sub ili naziv funkcije trebao bi započeti slovom ili podvlakom. Ne može započeti brojem ili posebnim znakom
  • Naziv potprograma ili funkcije ne može biti ključna riječ. Ključna riječ je riječ koja ima posebno značenje u VBA. Riječi kao što su Private, Sub, Function i End, itd. sve su to primjeri ključnih riječi. Prevodilac ih koristi za određene zadatke.

S odabranim valjanim imenom, sama deklaracija slijedi fiksni obrazac.

Sintaksa potprograma VBA

Morat ćete omogućiti karticu Razvojni programer u Excelu da biste slijedili ovaj primjer. Ako ne znate kako omogućiti karticu Razvojni programer, pročitajte tutorial dalje VBA kontrole u Excelu

OVDJE u sintaksi,

Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String)
    'do something
End Sub

Objašnjenje sintakse

Code Akcijski
  • “Privatni Sub mySubRoutine(…)”
  • Ovdje se ključna riječ "Sub" koristi za deklariranje potprograma pod nazivom "mySubRoutine" i pokretanje tijela potprograma.
  • Ključna riječ Private koristi se za određivanje opsega potprograma
  • “ByVal arg1 kao niz, ByVal arg2 kao niz”:
  • Deklarira dva parametra tipa podataka niza naziva arg1 i arg2
  • “Završni pod”
  • “End Sub” se koristi za završetak tijela potprograma

Sljedeći potprogram prihvaća ime i prezime i prikazuje ih u okviru s porukom.

Sada ćemo programirati i izvršiti ovu podproceduru. Da vidimo ovo.

Kako nazvati Sub u VBA

Ispod je korak po korak proces kako nazvati Sub u VBA:

  1. Dizajnirajte korisničko sučelje i postavite svojstva za korisničke kontrole.
  2. Dodajte potprogram
  3. Napišite kod događaja klika za naredbeni gumb koji poziva potprogram
  4. Testirajte aplikaciju

Korak 1) Korisničko sučelje

Dizajnirajte korisničko sučelje kao što je prikazano na slici ispod.

Kako nazvati Sub u VBA

Postavite sljedeća svojstva. Svojstva koja postavljamo:

S / N kontrola Svojstvo Još malo brojeva
1 CommandButton1 Ime btnDisplayFullName
2 Naslov Puni naziv potprograma

Vaše sučelje bi sada trebalo izgledati ovako.

Kako nazvati Sub u VBA

Korak 2) Dodaj potprogram

  1. Pritisnite Alt + F11 da biste otvorili prozor koda
  2. Dodajte sljedeću potprogram
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String)
    MsgBox firstName & " " & lastName
End Sub

OVDJE u kodu,

Code Akcije
  • “Privatni podprikazPuno ime(…)”
  • Deklariše privatnu podrutinu displayFullName koja prihvaća dva parametra niza.
  • “ByVal firstName kao niz, ByVal prezime kao niz”
  • Deklarira dvije varijable parametra firstName i lastName
  • PorBox ime prezime"
  • Poziva MsgBox ugrađena funkcija za prikaz okvira s porukom. Zatim prosljeđuje varijable 'firstName' i 'lastName' kao parametre.
  • Znak & "&" koristi se za spajanje dviju varijabli i dodavanje praznog prostora između njih.

Korak 3) Pozivanje potprograma

Pozivanje potprograma iz događaja klika na naredbeni gumb.

  • Desnim klikom miša odaberite naredbeni gumb kao što je prikazano na slici ispod. Odaberite Prikaz Code.
  • Otvorit će se uređivač koda

Kako nazvati Sub u VBA

Dodajte sljedeći kod u uređivač koda za događaj klika naredbenog gumba btnDisplayFullName.

Private Sub btnDisplayFullName_Click()
    displayFullName "John", "Doe"
End Sub

Vaš prozor koda sada bi trebao izgledati ovako

Kako nazvati Sub u VBA

Spremite promjene i zatvorite prozor koda.

Korak 4) Testiranje koda

Na alatnoj traci za razvojne programere isključite način dizajna. Kako je prikazano dolje.

Kako nazvati Sub u VBA

Korak 5) Kliknite na naredbeni gumb 'Podrutina punog naziva'.

Dobit ćete sljedeće rezultate

Kako nazvati Sub u VBA

Preuzmite gornji Excel Code

Gumb je praktičan, ali nije jedini način za pokretanje potprograma, a tijekom razvoja rijetko je najbrži.

Kako pokrenuti potprogram bez gumba

Dok još pišete kod, dodavanje kontrole u list samo radi testiranja potprograma gubi vrijeme. VBA nudi četiri druga načina za njegovo izvršavanje, a svaki odgovara drugom trenutku u razvojnom ciklusu.

  • Pritisnite F5 u editoru: Postavite kursor bilo gdje unutar Suba i pritisnite F5. Pokreće se odmah. Ovo radi samo kada Sub ne prima argumente, jer VBA nema vrijednosti za dati.
  • Prođite s F8: Isti postupak, redak po redak, tako da možete pratiti promjenu svake varijable u prozoru Lokalne vrijednosti. Koristite ga kada je rezultat pogrešan i trebate vidjeti gdje.
  • Koristite dijalog Makroi: Na kartici Razvojni programer kliknite Makroi, odaberite naziv i kliknite Pokreni. Na ovom popisu prikazuju se samo javni podprogrami bez argumenata, zbog čega se pomoćni podprogram obično deklarira kao privatni.
  • Pozovite ga iz drugog Suba: Ovo je metoda koja se koristi za bilo koji Sub koji prima argumente i ona na koju se oslanja gornji gumb naredbe.

Posljednja opcija ima dva prihvaćena oblika. Pisanje imena nakon kojeg slijede goli argumenti funkcionira, kao i eksplicitna ključna riječ Call, ali pravilo zagrada se razlikuje među njima.

Sub RunTheGreeting()
    ' Form 1: no Call keyword, no brackets
    displayFullName "John", "Doe"

    ' Form 2: Call keyword, brackets required
    Call displayFullName("Jane", "Roe")
End Sub

Oba retka rade potpuno istu stvar. Miješanje dvaju oblika, pisanjem zagrada bez ključne riječi Call, najčešći je uzrok pogreške kompajliranja „Očekivano: =" kada Sub uzima više od jednog argumenta.

Razlika između podnaslova i funkcije u VBA-i

Sub i Function su dvije vrste procedura u VBA-i, a početnici često biraju pogrešnu. Odlučujuće pitanje je jednostavno: treba li pozivni kod povratnu vrijednost?

svojstvo ispod funkcija
Vraća vrijednost Ne Da, dodijeljeno nazivu funkcije
Deklarirano s Sub … End Sub Funkcija … Kraj funkcije
Nazvan kao Izjava u vlastitom retku Dio izraza, na primjer x = myFunc(2)
Može se koristiti u ćeliji radnog lista Ne Da, kao korisnički definirana funkcija
Tipična upotreba Formatiranje lista, brisanje unosa, prikaz poruke Izračunaj ukupan iznos, pretvori vrijednost, pretraži podatke

Koristite Sub kada kod djeluje na radnu knjigu i VBA funkcija kada kod proizvede odgovor koji nešto drugo konzumira.

Pitanja i odgovori

Privatni podmodul može se pozvati samo iz modula koji ga deklarira. Javni podmodul vidljiv je svakom modulu u projektu i jedina je vrsta koja se pojavljuje u dijalogu Makroi.

ByVal prosljeđuje kopiju, tako da potprogram ne može mijenjati varijablu pozivatelja. ByRef prosljeđuje samu varijablu, tako da je svaka promjena vidljiva pozivatelju. ByRef je zadana vrijednost kada nije napisana nijedna ključna riječ.

Koristite naredbu Exit Sub. Zaustavlja proceduru u toj točki i vraća kontrolu onome tko ju je pozvao, što je korisno za prijevremeni izlazak kada test validacije ne uspije.

Da. Zalijepite makronaredbu i AI asistent grupira povezane retke, predlaže opisni naziv za svaki novi podnaslov i prepisuje original kao kratki niz poziva. Testirajte rezultat na kopiji radne knjige.

Da. Dajte mu tekst pogreške i liniju pozivanja, a AI asistent identificira uzroke poput zagrada korištenih bez ključne riječi Call, pogrešnog broja argumenata ili neusklađenog tipa podataka, a zatim dostavlja ispravljenu liniju.

Sažmite ovu objavu uz: