Bár a VBA a beépített funkciók megfelelő választékát kínálja, előfordulhat, hogy nem mindig találja meg pontosan azt, amire szüksége van. Szerencsére az Excel legtöbb munkalapfüggvényét is használhatja a VBA-eljárásokban. Az egyetlen olyan munkalapfüggvény, amelyet nem használhat, azok, amelyek egyenértékű VBA-funkcióval rendelkeznek. Például nem használhatja az Excel RAND függvényét (amely véletlen számot generál), mert a VBA-nak van egy ezzel egyenértékű függvénye: Rnd.
A VBA az Application objektumban található WorksheetFunction objektumon keresztül teszi elérhetővé az Excel munkalapfüggvényeit. Íme egy példa arra, hogyan használhatja az Excel SUM függvényét VBA utasításban:
Összesen = Application.WorksheetFunction.SUM(Tartomány(“A1:A12”))
Kihagyhatja a kifejezésből az Application részt vagy a WorksheetFunction részt. Mindkét esetben a VBA kitalálja, mit csinálsz. Más szóval, ez a három kifejezés pontosan ugyanúgy működik:
Összesen = Application.WorksheetFunction.SUM(Tartomány(“A1:A12”))
Összesen = WorksheetFunction.SUM(Tartomány("A1:A12")
Összesen = Alkalmazás.SZUM(Tartomány("A1:A12")
Személyes előnyben részesítem a WorksheetFunction részt, hogy tökéletesen egyértelmű legyen, hogy a kód Excel függvényt használ.
Példák munkalap függvényekre
Itt megtudhatja, hogyan lehet munkalapfüggvényeket használni VBA-kifejezéseiben.
A maximális érték megkeresése egy tartományban
Íme egy példa, amely bemutatja, hogyan használható az Excel MAX munkalapfüggvénye VBA-eljárásban. Ez az eljárás a maximális értéket jeleníti meg az aktív munkalap A oszlopában:

Munkalapfüggvény használata a VBA-kódban.
Sub ShowMax()
Dim TheMax As Double
TheMax = WorksheetFunction.MAX(Tartomány(“A:A”))
MsgBox TheMax
Vége Sub
A MIN függvény segítségével egy tartomány legkisebb értékét kaphatja meg. És ahogy az várható volt, hasonló módon használhat más munkalapfüggvényeket is. Használhatja például a NAGY függvényt egy tartomány k- adik legnagyobb értékének meghatározására . A következő kifejezés ezt mutatja:
SecondHighest = WorksheetFunction.LARGE(Tartomány(“A:A”),2)
Figyeljük meg, hogy a LARGE függvény két argumentumot használ. A második argumentum a k- edik részt képviseli – ebben az esetben a 2 (a második legnagyobb érték).
A jelzáloghitel törlesztőrészletének kiszámítása
A következő példa a PMT munkalapfüggvényt használja a jelzáloghitel-fizetés kiszámításához. Három változót használunk a Pmt függvénynek argumentumként átadott adatok tárolására. Egy üzenetdobozban megjelenik a kiszámított fizetés.
Sub PmtCalc()
Dim IntRate Duplaként
Dim LoanAmt As Double
Dim Periods Am Long
IntRate = 0,0625/12
Időszakok = 30 * 12
Hitelösszeg = 150 000
MsgBox WorksheetFunction.PMT(IntRate, Periods, -LoanAmt)
Vége Sub
Ahogy a következő utasítás mutatja, az értékeket közvetlenül is beszúrhatja függvényargumentumként:
MsgBox WorksheetFunction.PMT(0,0625 /12; 360; -150000)
Ha azonban változókat használunk a paraméterek tárolására, akkor a kód könnyebben olvasható és szükség esetén módosítható.
Keresési funkció használata
A következő példa a VBA InputBox és MsgBox funkcióit, valamint az Excel VLOOKUP funkcióját használja. Egy cikkszámot kér, majd lekéri az árat egy keresőtáblázatból. Az alábbiakban az A1:B13 tartomány neve PriceList.

A PriceList nevű termékcsalád az alkatrészek árait tartalmazza.
Sub GetPrice()
Dim PartNum Változatként
Dim Ár Dupla
PartNum = InputBox ("Adja meg a cikkszámot")
Lapok („Árak”). Aktiválja
Ár = WorksheetFunction.VLOOKUP(PartNum, Range(“Árlista”), 2, False)
MsgBox PartNum & "költségek" és ár
Vége Sub
A GetPrice eljárás a következőképpen működik:
-
A VBA InputBox funkciója egy cikkszámot kér a felhasználótól.
-
A felhasználó által beírt cikkszám hozzá van rendelve a PartNum változóhoz.
-
A következő utasítás aktiválja az Árak munkalapot, arra az esetre, ha az még nem az aktív munkalap.
-
A kód a VLOOKUP függvényt használja a cikkszám megtalálásához a táblázatban.
-
Figyelje meg, hogy az ebben az utasításban használt argumentumok megegyeznek azokkal, amelyeket a függvényhez használna egy munkalapképletben. Ez az utasítás a függvény eredményét az Ár változóhoz rendeli.
-
A kód az alkatrész árát jeleníti meg az MsgBox funkción keresztül.
Ennek az eljárásnak nincs hibakezelése, és csúnyán meghiúsul, ha nem létező cikkszámot ad meg. (Próbáld ki.) Ha ez egy tényleges alkalmazás lenne, amelyet egy tényleges üzleti életben használnak, akkor érdemes néhány olyan kijelentést hozzáadni, amelyek kecsesebben kezelik a hibákat.
Munkalapfüggvények bevitele
Az Excel beillesztési funkciója párbeszédpanel nem használható munkalapfüggvény beszúrására VBA-modulba. Ehelyett az ilyen függvényeket a régimódi módon írja be: kézzel. Azonban, ha tudja használni a Paste funkció párbeszédpanel azonosítani a kívánt funkciót használni, és megtudni érveit.
Kihasználhatja a VBE Tagok automatikus listája opcióját is, amely az összes munkalapfunkció legördülő listáját jeleníti meg. Csak írja be az Application.WorksheetFunction parancsot , majd egy pontot. Ezután megjelenik a használható funkciók listája. Ha ez a szolgáltatás nem működik, válassza a VBE Eszközök → Beállítások parancsát, kattintson a Szerkesztő fülre, és jelölje be a Tagok automatikus listája mellett.

A VBA-kódban használható munkalapfüggvények listájának beszerzése.
További információ a munkalapfüggvények használatáról
A VBA újoncai gyakran összekeverik a VBA beépített funkcióit és az Excel munkafüzet funkcióit. Érdemes megjegyezni, hogy a VBA nem próbálja meg újra feltalálni a kereket. A VBA többnyire nem duplikálja az Excel munkalapfüggvényeit.
A legtöbb olyan munkalapfüggvényhez, amely nem érhető el a WorksheetFunction objektum metódusaként, használhat egyenértékű VBA beépített operátort vagy függvényt. Például a MOD munkalap funkció nem érhető el a WorksheetFunction objektumban, mert a VBA-nak van egy megfelelője: a beépített Mod operátora.
A lényeg? Ha függvényt kell használnia, először ellenőrizze, hogy a VBA-ban van-e valami, ami megfelel az Ön igényeinek. Ha nem, nézze meg a munkalap funkcióit. Ha minden más nem sikerül, akkor egyéni függvényt írhat VBA használatával.