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.