Excel VBA szubrutin: Sub hívása VBA-ban példával

⚡ Okos összefoglaló

Az Excel VBA alprogramjai olyan kódblokkokat csoportosítanak, amelyek egy feladatot érték visszaadása nélkül hajtanak végre. Ez az oldal ismerteti az elnevezési szabályokat, a részprogramok szintaxisát, a részprogramok meghívását parancsgombról, valamint azt, hogy a részprogram hogyan különbözik a függvényektől.

  • 📦 Meghatározás: Egy alprogram egy adott feladatot hajt végre, és nem ad vissza értéket a hívó kódnak.
  • ♻️ Újrahasználhatóság: Egy alprogramot sokszor meghívhatunk a projekt bármely pontjáról.
  • 🔤 Elnevezési szabályok: A név nem tartalmaz szóközöket, betűvel vagy aláhúzásjellel kezdődik, és soha nem VBA kulcsszó.
  • 🧾 Syntax: A Private Sub name(ByVal arg As String) megnyitja a blokkot, az End Sub pedig bezárja.
  • 🖱️ Hívás: Egy parancsgombra kattintó esemény meghívja az alprogramot és átadja annak argumentumait.
  • ▶ ️ Közvetlenül fut: Az F5, a Makrók párbeszédpanel vagy a Hívás kulcsszó mind gomb nélküli alprogramot futtat.
  • 🔁 Al- vagy funkció: Válasszon egy Függvényt, ha értéket kell visszaadni, egyébként válasszon egy Alfüggvényt.

Excel VBA szubrutin

Mi az a szubrutin a VBA-ban?

A Alprogram a VBA-ban egy olyan kódrészlet, amely végrehajt egy, a kódban leírt feladatot, de nem ad vissza eredményt vagy értéket. A szubrutinok a nagy kódrészletek kis kezelhető részekre bontására szolgálnak. Az alprogramok többször is előhívhatók a program bármely pontjáról.

Tegyük fel, hogy létrehozott egy felhasználói felületet szövegdobozokkal a felhasználói adatok fogadására. Létrehozhat egy szubrutint, amely törli a szövegdobozok tartalmát. A VBA hívási szubrutin megfelelő ebben a forgatókönyvben, mert nem kíván eredményt adni.

Miért használjunk szubrutinokat?

  • Törje fel a kódot kis, kezelhető kódra: Egy átlagos számítógépes programnak ezer és ezer forráskódsora van. Ez összetettséget eredményez. Az alprogramok segítenek megoldani ezt a problémát azáltal, hogy a programot kis kezelhető kóddarabokra bontják.
  • Code újrahasználhatóság. Tegyük fel, hogy van egy programja, aminek hozzá kell férnie az adatbázishoz, és a programban található szinte minden ablaknak interakcióba kell lépnie az adatbázissal. Ahelyett, hogy külön kódot írna ezekhez az ablakokhoz, létrehozhat egy függvényt, amely kezeli az összes adatbázis-interakciót. Ezután bármelyik ablakból hívhatja.
  • Az alprogramok és funkciók öndokumentálóak. Tegyük fel, hogy van egy számítási LoanInterest függvénye, és egy másik, amely azt mondja, hogy connectToDatabase. Az alprogram/függvény nevének megtekintésével a programozó meg tudja mondani, mit csinál a program.

Mielőtt megírna egyet, a fordító elvárja, hogy a név egy rövid szabályrendszert kövessen.

Alprogramok és függvények elnevezésének szabályai

Az alprogramok és függvények használatához szabályokat kell követni.

  • Egy szubrutin vagy VBA-hívási függvény neve nem tartalmazhat szóközt
  • Az Excel VBA hívási al- vagy függvénynevének betűvel vagy aláhúzásjellel kell kezdődnie. Nem kezdődhet számmal vagy speciális karakterrel
  • Egy szubrutin vagy függvénynév nem lehet kulcsszó. A kulcsszó olyan szó, amelynek különleges jelentése van VBA. Az olyan szavak, mint a Private, Sub, Function és End stb., mind példák a kulcsszavakra. A fordító speciális feladatokhoz használja őket.

Érvényes név kiválasztása esetén maga a deklaráció egy rögzített mintát követ.

VBA szubrutin szintaxis

A példa követéséhez engedélyeznie kell a Fejlesztő lapot az Excelben. Ha nem tudja, hogyan kell engedélyezni a Fejlesztő lapot, olvassa el az oktatóanyagot VBA vezérlők az Excelben

ITT a szintaxisban,

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

Szintaxis magyarázata

Code Akció
  • „Private Sub mySubRoutine(…)”
  • Itt a „Sub” kulcsszó egy „mySubRoutine” nevű szubrutin deklarálására és az alprogram törzsének elindítására szolgál.
  • A Private kulcsszó az alprogram hatókörének meghatározására szolgál
  • "ByVal arg1 As String, ByVal arg2 As String":
  • Két paramétert deklarál az arg1 és arg2 karakterlánc adattípusból
  • „End Sub”
  • Az „End Sub” az alprogram törzsének befejezésére szolgál

A következő szubrutin elfogadja az utó- és vezetéknevet, és megjeleníti azokat egy üzenetablakban.

Most ezt az aleljárást fogjuk programozni és végrehajtani. Lássuk ezt.

Sub hívása VBA-ban

Az alábbiakban egy lépésről lépésre bemutatjuk a Sub hívását VBA-ban:

  1. Tervezze meg a felhasználói felületet és állítsa be a felhasználói vezérlők tulajdonságait.
  2. Adja hozzá az alprogramot
  3. Írja be az alprogramot hívó parancsgomb kattintási eseménykódját
  4. Tesztelje az alkalmazást

Step 1) felhasználói felület

Tervezze meg a felhasználói felületet az alábbi képen látható módon.

Sub hívása VBA-ban

Állítsa be a következő tulajdonságokat. Az általunk beállított tulajdonságok:

S / N Vezérlés Ingatlanok Érték:
1 Parancsgomb1 Név btnDisplayFullName
2 Képaláírás Teljes név szubrutin

A felületnek most a következőképpen kell kinéznie.

Sub hívása VBA-ban

Step 2) Szubrutin hozzáadása

  1. Nyomja meg az Alt + F11 billentyűt a kódablak megnyitásához
  2. Adja hozzá a következő szubrutint
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String)
    MsgBox firstName & " " & lastName
End Sub

ITT a kódban,

Code Hozzászólások
  • „Private Sub displayFullName(…)”
  • Deklarál egy displayFullName privát szubrutint, amely két karakterlánc-paramétert fogad el.
  • „ByVal firstName As String, ByVal lastName As String”
  • Két paraméterváltozót deklarál: firstName és lastName
  • msgBox keresztnév családnév"
  • Az MsgBox beépített funkció az üzenetdoboz megjelenítéséhez. Ezután a 'firstName' és 'lastName' változókat adja át paraméterként.
  • Az „&” jelet a két változó összefűzésére és egy üres szóköz hozzáadására használják.

Step 3) Az alprogram hívása

A szubrutin meghívása a parancsgomb kattintás eseményéből.

  • Kattintson jobb gombbal a parancsgombra az alábbi képen látható módon. Válassza a Nézet lehetőséget. Code.
  • Megnyílik a kódszerkesztő

Sub hívása VBA-ban

Adja hozzá a következő kódot a kódszerkesztőben a btnDisplayFullName parancsgomb kattintási eseményéhez.

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

A kód ablakának most a következőképpen kell kinéznie

Sub hívása VBA-ban

Mentse el a változtatásokat, és zárja be a kód ablakot.

Step 4) A kód tesztelése

A fejlesztői eszköztáron kapcsolja ki a tervezési módot. Az alábbiak szerint.

Sub hívása VBA-ban

Step 5) Kattintson a 'FullName szubrutin' parancsgombra.

A következő eredményeket kapja

Sub hívása VBA-ban

Töltsd le a fenti Excelt Code

Egy gomb kényelmes, de nem ez az egyetlen módja egy alprogram elindításának, és fejlesztés közben ritkán a leggyorsabb.

Hogyan futtathatunk egy alprogramot gomb nélkül

Még kódírás közben időpocsékolás egy vezérlő hozzáadása a munkalaphoz csak egy alprogram tesztelése céljából. A VBA négy másik módot kínál egy ilyen futtatására, és mindegyik a fejlesztési ciklus egy másik pontjához illik.

  • Nyomd meg az F5 billentyűt a szerkesztőben: Vigye a kurzort a Sub bárhová, és nyomja meg az F5 billentyűt. Azonnal lefut. Ez csak akkor működik, ha a Sub nem fogad argumentumokat, mivel a VBA-nak nincsenek értékei, amelyeket meg kellene adnia.
  • Lépésről lépésre az F8 billentyűvel: Ugyanaz a futtatás, soronként, így a Lokálisok ablakban láthatod az egyes változók változását. Akkor használd, ha egy eredmény hibás, és látni szeretnéd, hogy hol.
  • Használja a Makrók párbeszédpanelt: A Fejlesztők lapon kattintson a Makrók elemre, válassza ki a nevet, majd kattintson a Futtatás gombra. Csak az argumentumok nélküli nyilvános subok jelennek meg ebben a listában, ezért a segítő Subokat általában Privátként deklarálják.
  • Hívd meg egy másik alközpontból: Ez a metódus minden argumentumot fogadó Sub esetében használatos, és erre támaszkodik a fenti parancsgomb is.

Az utolsó opciónak két elfogadott alakja van. A név utáni egyszerű argumentumok működnek, ahogy a kifejezett Call kulcsszó is, de a zárójeles szabály eltér közöttük.

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

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

Mindkét sor pontosan ugyanazt csinálja. A két forma keverése, azaz a zárójelek írása a Call kulcsszó nélkül, a „Várható: =" fordítási hiba leggyakoribb oka, amikor egy Sub egynél több argumentumot fogad el.

Különbség egy al- és egy függvény között VBA-ban

A VBA két eljárástípusa a Sub és a Function, és a kezdők gyakran rosszat választanak. A döntő kérdés egyszerű: a hívó kódnak szüksége van-e egy értékre vissza?

Jellemző alatt Funkció
Értéket ad vissza Nem Igen, a függvény nevéhez rendelve
Kijelentve a következővel: Sub … End Sub Függvény … Függvény vége
Úgy hívják, mint Egy önálló sorban szereplő állítás Egy kifejezés része, például x = myFunc(2)
Használható egy munkalap cellájában Nem Igen, felhasználó által definiált függvényként
Tipikus felhasználás Lap formázása, bemenetek törlése, üzenet megjelenítése Összeg kiszámítása, érték átváltása, adatok keresése

Használjon Sub-et, amikor a kód a munkafüzetre hat, és egy VBA függvény amikor a kód egy olyan választ ad, amelyet valami más felhasznál.

GYIK

Egy Private Sub csak a deklaráló modulon belülről hívható meg. Egy Public Sub a projekt minden modulja számára látható, és ez az egyetlen típus, amely a Makrók párbeszédpanelen jelenik meg.

A ByVal egy másolatot ad át, így az alprogram nem tudja módosítani a hívó változóját. A ByRef magát a változót adja át, így minden változás látható a hívó számára. A ByRef az alapértelmezett érték, ha egyik kulcsszó sincs megadva.

Használd az Exit Sub utasítást. Ez leállítja az eljárást ezen a ponton, és visszaadja a vezérlést arra, amelyik meghívta, ami hasznos a korai kilépéshez, ha egy érvényesítési teszt sikertelen.

Igen. Illessze be a makrót, és egy mesterséges intelligencia asszisztens csoportosítja a kapcsolódó sorokat, leíró nevet javasol minden új Sub-nek, és az eredetit rövid hívássorozatként írja át. Tesztelje az eredményt a munkafüzet egy másolatán.

Igen. Add meg a hibaüzenet szövegét és a hívó sort, és egy mesterséges intelligencia asszisztens azonosítja az okokat, például a Call kulcsszó nélküli zárójelek használatát, a helytelen argumentumszámot vagy az eltérő adattípust, majd megadja a javított sort.

Foglald össze ezt a bejegyzést a következőképpen: