Excel VBA funkció oktatóanyag: Visszatérés, hívás, példák

⚡ Okos összefoglaló

Az Excel VBA függvényei olyan kódblokkok, amelyek végrehajtanak egy feladatot, és eredményt adnak vissza a megnevezett cellának. Ez az oldal a deklarációs szintaxist, az érték visszaadását, egy összeadási példát és a függvények használatát tárgyalja egy munkalapcellán belül.

  • 🎯 Meghatározás: Egy függvény egy adott feladatot hajt végre, és egyetlen eredményt ad vissza a hívó kódnak.
  • 🧾 Syntax: Függvény neve(argumentumok) A Típus megadásával megnyitható a blokk, az End Függvény pedig bezárható.
  • ↩️ Érték visszaadása: Rendelje hozzá az eredményt a függvény nevéhez, például az add parancsban.Numbers = elsőSzám + másodikSzám.
  • 🔢 Visszatérési típus: Olyan hosszú vagy olyan hosszú kijelentése Double elkerüli a lassabb alapértelmezett Variantot.
  • 🖱️ Hívás: Egy parancsgomb két számot ad át, és a visszaadott összeget egy üzenetmezőben jeleníti meg.
  • 📊 Munkalap használata: Egy standard modulban található nyilvános függvény bármely cellában felhasználó által definiált képletté válik.

Excel VBA függvény

Mi az a függvény?

A függvény egy kódrészlet, amely egy adott feladatot hajt végre, és eredményt ad vissza. A függvényeket többnyire ismétlődő feladatok végrehajtására használják, mint például a kimeneti adatok formázása, számítások végrehajtása stb.

Tegyük fel, hogy fejlesztő vagyping Egy program, amely kiszámítja a kölcsön kamatát. Létrehozhatsz egy függvényt, amely elfogadja a kölcsön összegét és a visszafizetési időszakot. A függvény ezután a kölcsön összegét és a visszafizetési időszakot felhasználva kiszámíthatja a kamatot és visszaadhatja az értéket.

Miért használjunk függvényeket?

A függvények használatának előnyei megegyeznek az alprogramoknál felsoroltakkal: egy hosszú programot kezelhető részekre bontnak, a projekt bármely pontjáról újrafelhasználhatók, és egy leíró név dokumentálja a kód működését. Excel VBA alprogram oktatóanyag teljes mértékben fedezi ezeket a juttatásokat.

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

Az elnevezési szabályok megegyeznek az alprogramokra vonatkozókkal. A függvénynév nem tartalmazhat szóközt, betűvel vagy aláhúzásjellel kell kezdődnie, és nem lehet foglalt függvénynév. VBA kulcsszó, például Függvény, Privát vagy Vége.

VBA szintaxis a függvény deklarálásához

Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer)
    myFunction = arg1 + arg2
End Function

ITT a szintaxisban,

Code Akció
  • „Private Function myFunction(…)”
  • Itt a „Function” kulcsszó a „myFunction” nevű függvény deklarálására és a függvény törzsének elindítására szolgál.
  • A „Privát” kulcsszó a funkció hatókörének meghatározására szolgál
  • „ByVal arg1 egész számként, ByVal arg2 egész számként”
  • Két egész adattípusú paramétert deklarál, az 'arg1' és 'arg2' néven.
  • myFunction = arg1 + arg2
  • kiértékeli az arg1 + arg2 kifejezést, és az eredményt a függvény nevéhez rendeli.
  • „Vége funkció”
  • Az „End Function” a függvény törzsének lezárására szolgál.

Érték visszaadása és a függvény adattípusának beállítása

Egy függvénynek egyetlen feladata van, ami egy alprogramnak nincs: visszaad egy értéket. Két részlet vezérli ezt az értéket, és mindkettőt könnyű figyelmen kívül hagyni.

Az első az értékadás. A VBA-ban nincs Return utasítás. Ehelyett az eredményt a függvény saját nevéhez rendeljük, ezért olvasható a sor myFunction = arg1 + arg2Ha az értékadás soha nem fut le, a függvény hiba helyett csendben üres értéket ad vissza, így a kód minden ágának be kell állítania azt.

A második a visszatérési típus. A fenti deklaráció a záró zárójelnél végződik, így a függvény egy Variant értéket ad vissza. Az As záradék hozzáadása a zárójelek után rögzíti a típust, ami gyorsabb, kevesebb memóriát használ, és lehetővé teszi a fordító számára az eltérések észlelését.

Nyilatkozat Visszatér Mikor kell használni
f(x függvény, amennyi ideig) Változat Csak akkor, ha az eredmény típusa valóban változik
f(x függvény Among Long) Among Long Hosszú Egész számok, például darabszámok és sorszámok
f(x függvény, amíg) Double Double Bármely tizedesjegyeket előállító számítás
f(x) függvény, amely karakterláncként írható Húr Formázott szöveg visszaadása megjelenítésre
f(x) függvény, As Long, mint Boole-függvény logikai Egy érvényességi ellenőrzés, amely igaz vagy hamis választ ad

💡 Tipp: Az Exit függvénnyel korábban kiléphetünk, miután a visszatérési érték be van állítva, ugyanúgy, ahogy az Exit Sub kilép egy alprogramból.

Példával bemutatott funkció:

A funkciók nagyon hasonlóak az alprogramhoz. A fő különbség a szubrutin és a függvény között az, hogy a függvény meghívásakor értéket ad vissza. Míg egy szubrutin nem ad vissza értéket, meghívásakor. Tegyük fel, hogy két számot szeretne hozzáadni. Létrehozhat olyan függvényt, amely két számot fogad el, és a számok összegét adja vissza.

  1. Hozza létre a felhasználói felületet
  2. Adja hozzá a függvényt
  3. Írjon kódot a parancsgombhoz
  4. Tesztelje a kódot

Step 1) Felhasználói felület

Adjon hozzá egy parancsgombot a munkalaphoz az alábbiak szerint

VBA függvények és szubrutin

Állítsa a CommandButton1 következő tulajdonságait a következőre.

S / N Vezérlés Ingatlanok Érték:
1 Parancsgomb1 Név btnAddNumbers
2 Képaláírás hozzáad Numbers Funkció

A felületnek most a következőképpen kell megjelennie

VBA függvények és szubrutin

Step 2) Funkciókód.

  1. Nyomja meg az Alt + F11 billentyűt a kódablak megnyitásához
  2. Adja hozzá a következő kódot
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer)
    addNumbers = firstNumber + secondNumber
End Function

ITT a kódban,

Code Akció
  • „Privát funkció hozzáadásaNumbers(...) ”
  • Privát függvényt deklarál „addNumbers”, amely két egész paramétert fogad el.
  • „ByVal firstNumber As Integer, ByVal secondNumber As Integer”
  • Két paraméterváltozót deklarál: firstNumber és secondNumber
  • "add hozzáNumbers = firstNumber + secondNumber”
  • Összeadja a firstNumber és a secondNumber értékeket, és hozzárendeli az összeadandó összegetNumbers.

3. lépés) Írás Code amely meghívja a függvényt

  1. Jobb klikk a Hozzáadás gombraNumbers parancsgomb
  2. Nézet kiválasztása Code
  3. Adja hozzá a következő kódot
Private Sub btnAddNumbers_Click()
    MsgBox addNumbers(2, 3)
End Sub

ITT a kódban,

Code Akció
„MsgBox hozzáNumbers(egy)"
  • Meghívja az add függvénytNumbers és átadja a 2-es és 3-as paramétereket. A függvény a két szám ötös (5) összegét adja vissza.

Step 4) Futtassa a programot, a következő eredményeket kapja

VBA függvények és szubrutin

Töltse le a fenti kódot tartalmazó Excelt

Töltsd le a fenti Excelt Code

A fenti gomb VBA-kódból hívja meg a függvényt. Egy függvény magából a munkalapról is meghívható, gomb nélkül.

VBA függvény használata egy munkalapcellában

Egy VBA-ban írt függvény pontosan úgy írható be egy cellába, mint a SZUM vagy a FKERES. Az Excel ezt felhasználó által definiált függvénynek (UDF) nevezi, és ez az oka annak, hogy sokan a függvényeket az alprogramok előtt tanulják meg. Három feltételnek kell teljesülnie.

  • Helyezze el egy szabványos modulban: Beszúrás, Modul a szerkesztőben. A munkalap mögött vagy a ThisWorkbook mappában tárolt függvények nem láthatók a képletsávon.
  • Nyilvánossá nyilvánítás: A fenti példa a Private kulcsszót használja, amely elrejti azt az Excelből. Az alapértelmezett érték a Public, így elegendő a kulcsszó eltávolítása.
  • Értéket ad vissza, semmit sem változtat: Egy UDF nem tud cellákat formázni, sorokat törölni vagy másik cellába írni. Az Excel blokkolja ezeket a műveleteket, és a cella #ÉRTÉK! hibát jelenít meg.

Az alábbi függvény hőmérsékletet konvertál, és a munkalap bármely pontján használható.

Public Function CelsiusToF(ByVal Celsius As Double) As Double
    CelsiusToF = (Celsius * 9 / 5) + 32
End Function

Mentse a munkafüzetet makróbarát .xlsm fájlként, majd írja be a következőt: =CelsiusF(A1) bármelyik cellába. Az eredmény az A1 cellában bekövetkező változások után frissül, és a név megjelenik a képlet automatikus kiegészítési listájában a Felhasználó által definiált kategória alatt. Mivel a munkafüzet most már makrókat tartalmaz, a megnyitónak engedélyeznie kell a tartalmat, mielőtt a képlet értéket adna vissza a #NÉV? hibakód helyett.

Gyakori VBA függvényhibák és javításuk

Négy probléma magyarázza a legtöbb olyan függvényt, amelyek lefordulnak, de rossz választ adnak vissza.

  • A függvény üres vagy 0 értéket ad vissza: Az eredményt soha nem rendeltük hozzá a függvény nevéhez, vagy egy If utasítás egyik ága kihagyja az értékadást. Állítsa be a visszatérési értéket minden elérési úton.
  • #NÉV? egy munkalap cellájában: A függvény privát, egy munkalap modulban található egy standard modul helyett, vagy a munkafüzetet makrók engedélyezése nélkül mentették.
  • Túlcsordulás egész argumentumokkal: A példa az As Integer függvényt használja, amely 32 767-nél megáll. Valós adatok esetén módosítsa mindkét paramétert és a visszatérési típust Long értékre.
  • Egy megváltozott érvelés meglepi a hívót: A ByVal elhagyása esetén a VBA magát a változót adja át, így a függvény módosíthatja a hívó értékét. Írja be a ByVal értéket, kivéve, ha ezt a hatást szeretné.

GYIK

Nem közvetlenül. Tömböt vagy egyéni típust ad vissza, hogy több értéket egyetlen eredményben tároljon, vagy deklarálja a ByRef extra paramétereket, hogy a függvény visszaírjon a hívó változóiba.

Adja hozzá az Optional kulcsszót egy alapértelmezett értékkel, például az Optional ByVal Rate As-ben. Double = 0.05. Minden opcionális paraméter utáni paraméternek szintén opcionálisnak kell lennie, és a lista utolsó helyén kell állnia.

Igen, az Application.WorksheetFunction függvényen keresztül, például az Application.WorksheetFunction.Sum(Range(„A1:A10”)) utasítással. A VBA által már biztosított függvények, mint például a Left vagy a Trim, közvetlenül, az előtag nélkül hívódnak meg.

Igen. Illessze be a munkalap képletét, és egy mesterséges intelligencia asszisztens egy azzal egyenértékű nyilvános függvényt ad vissza elnevezett argumentumokkal és deklarált visszatérési típussal. Hasonlítsa össze mindkét eredményt a minta sorokon, mielőtt lecseréli a képletet.

Igen. Adja meg a függvényt és a képletet, és egy mesterséges intelligencia asszisztens rámutat az okokra, például az argumentumtípus-eltérésre, a hiányzó visszatérési értékadásra vagy egy felhasználó által definiált függvényen belüli cella módosítására tett kísérletre.

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