VBA funkció - hívás, visszatérési érték és paraméterek

Ez az oktatóanyag megtanítja, hogyan hozhat létre és használhat függvényeket paraméterekkel és azok nélkül a VBA -ban

A VBA nagyszámú beépített funkciót tartalmaz, amelyeket Ön is használhat, de saját maga is írhat. Amikor kódot ír a VBA -ba, írhatja azt al- vagy függvényeljárásban. A Function eljárás képes értéket visszaadni a kódnak. Ez rendkívül hasznos, ha azt szeretné, hogy a VBA végrehajtson egy feladatot az eredmény visszaadására. A VBA funkciók az Excel belsejéből is hívhatók, akárcsak az Excel beépített Excel funkciói.

Függvény létrehozása érvek nélkül

Funkció létrehozásához meg kell határozni a függvényt a funkció nevének megadásával. A függvény ezután adattípusként határozható meg, amely jelzi, hogy milyen típusú adatokat szeretne visszaadni.

Érdemes létrehozni egy függvényt, amely minden híváskor statikus értéket ad vissza - kicsit olyan, mint egy állandó.

123 Funkció GetValue () mint egészGetValue = 50Vége funkció

Ha futtatná a függvényt, a függvény mindig az 50 értéket adja vissza.

Létrehozhat olyan függvényeket is, amelyek objektumokra hivatkoznak a VBA -ban, de a Set Keyword használatával kell visszaadni az értéket a függvényből.

123 Funkció GetRange () tartománykéntGetRange = Tartomány beállítása ("A1: G4")Vége funkció

Ha a fenti függvényt használná a VBA -kódjában, a függvény mindig visszaadja az A1 – G4 cellatartományt bármelyik munkalapon.

Funkció meghívása alfolyamatból

Miután létrehozott egy függvényt, a kód bárhonnan máshonnan is meghívhatja, ha a funkció meghívásához egy alfolyamatot használ.

Az 50 -es érték mindig visszatér.

A GetRange függvényt egy almenüből is meghívhatja.

A fenti példában a GetRange függvényt hívja meg az al eljárás, hogy félkövérrel jelölje ki a tartományobjektum celláit.

Funkciók létrehozása

Egyetlen érv

A funkcióhoz paramétert vagy paramétereket is rendelhet. Ezeket a paramétereket érveknek nevezhetjük.

123 Funkció ConvertKilosToPounds (dblKilo duplaként) duplakéntConvertKiloToPounds = dblKilo*2.2Vége funkció

Ezután meghívhatjuk a fenti függvényt egy al eljárásból, hogy megállapítsuk, hány kiló egy adott kiló.

Szükség esetén egy függvény a VBA -kódon belül több eljárásból is meghívható. Ez nagyon hasznos, mivel megakadályozza, hogy ugyanazt a kódot kelljen újra és újra írnia. Ezenkívül lehetővé teszi a hosszú eljárások felosztását kisméretű, kezelhető funkciókra.

A fenti példában két eljárásunk van - mindegyik a Funkció segítségével kiszámítja a számukra átadott kilók fontértékét dblKilo A függvény érve.

Több érv

Létrehozhat egy függvényt több argumentummal, és az értékeket a részfunkció segítségével átadhatja a függvénynek.

123 Funkció CalculateDayDiff (Dátum1 dátumként, Dátum2 dátumként) kettősCalculateDayDiff = Dátum2-Dátum1Vége funkció

Ezután meghívhatjuk a függvényt, hogy kiszámítsuk a 2 dátum közötti napok számát.

Opcionális érvek

Választható argumentumokat is átadhat egy függvénynek. Más szóval, néha szükség lehet az érvre, és néha nem - attól függően, hogy milyen kóddal használja a függvényt.

123456 Funkció CalculateDayDiff (Dátum1 dátumként, Választható dátum2 dátumként) kettős'Ellenőrizze a második dátumot, és ha nincs ott, akkor a Date2 értéket tegye egyenlővé a mai dátummal.Ha Dátum2 = 0, akkor Dátum2 = Dátum'számítsd ki a különbségetCalculateDayDiff = Dátum2-Dátum1Vége funkció

Alapértelmezett érvérték

A függvény létrehozásakor beállíthatja az Opcionális argumentumok alapértelmezett értékét is, így ha a felhasználó kihagyja az argumentumot, akkor az alapértelmezett érték kerül felhasználásra.

1234 Funkció CalculateDayDiff (Dátum1 dátumként, Választható dátum2 dátumként = "2020.02.06") kettős funkcióként'számítsd ki a különbségetCalculateDayDiff = Dátum2-Dátum1Vége funkció

ByVal és ByRef

Ha értékeket ad át egy függvénynek, használhatja a ByVal vagy ByRef kulcsszavak. Ha ezek közül bármelyiket kihagyja, a ByRef alapértelmezettként használják.

ByVal azt jelenti, hogy a változó egy példányát továbbítja a függvényhez, míg ByRef azt jelenti, hogy a változó eredeti értékére hivatkozik. Amikor átadja a változó másolatát (ByVal), a változó eredeti értéke NEM megváltozott, de amikor a változóra hivatkozik, a változó eredeti értékét a függvény módosítja.

1234 Funkció GetValue (ByRef intA As Integer) Mint IntegerintA = intA * 4GetValue = intAVége funkció

A fenti függvényben a ByRef kihagyható, és a funkció ugyanúgy működik.

1234 Funkció GetValue (intA As Integer) As IntegerintA = intA * 4GetValue = intAVége funkció

Ennek a függvénynek a meghívásához futtathatunk egy al-eljárást.

123456789 Sub TestValues ​​()Dim intVal Mint egész'töltse ki a változót 10 értékkelintVal = 10'futtassa a GetValue függvényt, és jelenítse meg az értéket a közvetlen ablakbanHibakeresés. GetValue (intVal) nyomtatása'jelenítse meg az intVal változó értékét a közvetlen ablakbanHibakeresés. Nyomtatás intValEnd Sub

Vegye figyelembe, hogy a hibakeresési ablakok mindkét esetben a 40 értéket mutatják. Amikor átadja az IntVal változót a függvénynek - a 10 érték átkerül a függvényhez, és megszorozzuk 4 -gyel. A ByRef kulcsszó használatával (vagy annak teljes kihagyásával) módosul az IntVal változó értéke. Ez akkor jelenik meg, ha először a függvény eredményét jeleníti meg a közvetlen ablakban (40), majd az IntVal változó értékét a hibakereső ablakban (szintén 40).

Ha NEM akarjuk megváltoztatni az eredeti változó értékét, akkor a ByVal -t kell használnunk a függvényben.

1234 Funkció GetValue (ByVal intA As Integer) Mint IntegerintA = intA * 4GetValue = intAVége funkció

Ha most egy függvényből hívjuk meg a függvényt, akkor az IntVal változó értéke 10 marad.

Kilépés funkció

Ha létrehoz egy függvényt, amely tesztel egy bizonyos feltételt, és ha a feltétel igaznak bizonyul, vissza szeretné adni az értéket a függvényből, akkor előfordulhat, hogy hozzá kell adnia egy Kilépési függvény utasítást a Funkcióhoz, hogy előtte kilépjen a függvényből a funkció összes kódját végigfutotta.

12345678910111213 Funkció FindNumber (strSearch As String) Mint egészDim i As Integer'hurkolja végig a karakterlánc minden betűjétI = 1 Len (strSearch)'Ha a betű numerikus, adja vissza az értéket a függvénynekHa IsNumeric (Közép (strSearch, i, 1)) AkkorFindNumber = Középső (strSearch, i, 1)'majd lépjen ki a funkcióbólKilépés funkcióVége HaKövetkezőFindNumber = 0Vége funkció

A fenti függvény végigkíséri a megadott karakterláncot, amíg meg nem talál egy számot, majd visszaadja ezt a számot a karakterláncból. Csak akkor találja meg a karakterlánc első számát, mint akkor Kijárat a funkció.

A fenti függvényt egy olyan alrutin hívhatja meg, mint az alábbi.

1234567 Sub CheckForNumber ()Dim NumIs egész számként'adjon át egy szöveges karakterláncot a keresési szám függvénynekNumIs = FindNumber ("Upper Floor, 8 Oak Lane, Texas")'mutassa meg az eredményt a közvetlen ablakbanHibakeresés. Nyomtatási számokEnd Sub

Funkció használata Excel táblázatból

Amellett, hogy egy függvényt a VBA -kódból egy alprogram segítségével hívhat meg, a funkciót az Excel -lapról is meghívhatja. A létrehozott funkcióknak alapértelmezés szerint meg kell jelenniük a funkciólistában, a funkciólista Felhasználó által definiált részében.

Kattintson a fx a Funkció beszúrása párbeszédpanel megjelenítéséhez.

Válassza a lehetőséget Felhasználó által meghatározott a Kategória listából

Válassza ki a kívánt funkciót a rendelkezésre álló lehetőségek közül Felhasználó által definiált funkciók (UDF -ek).

Alternatív megoldásként, amikor elkezdi írni a függvényt Excelben, a funkciónak meg kell jelennie a funkciók legördülő listájában.

Ha nem szeretné, hogy a függvény elérhető legyen egy Excel -lapon belül, akkor a Privát szót a Funkció szó elé kell helyeznie, amikor létrehozza a függvényt a VBA -kódjában.

123 A CalculateDayDiff privát függvény (Dátum1 dátumként, Dátum2 dátumként) kettősCalculateDayDiff = Dátum2-Dátum1Vége funkció

Most nem jelenik meg a legördülő listában, amely az elérhető Excel funkciókat mutatja.

Érdekes módon azonban továbbra is használhatja a funkciót - csak nem jelenik meg a listában, amikor keres!

Ha a második érvet asnak nyilvánította Választható, kihagyhatja az Excel -lapon belül, valamint a VBA -kódon belül.

Az Excel -lapon érvek nélkül létrehozott függvényt is használhatja.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave