Pri programiranju VBA funkcija vrne vrednost. V Excelu 2016 lahko izvajate funkcije funkcij in pokličete funkcijo. Funkcije je za razliko od podprocedur mogoče izvesti le na dva načina:
Preizkusite to preprosto funkcijo. Vnesite ga v modul VBA:
Funkcija CubeRoot (število)
Kocka Koren = število ^ (1/3)
Končna funkcija
Ta funkcija je precej slaba; izračuna le kubični koren števila, ki mu je bilo posredovano kot argument. Vendar pa zagotavlja izhodišče za razumevanje funkcij. Ponazarja tudi pomemben koncept funkcij: kako vrniti vrednost. (Se spomnite, da funkcija vrne vrednost, kajne?)
Upoštevajte, da ena vrstica kode, ki sestavlja ta postopek funkcije, izvede izračun. Rezultat matematike (število na potenco 1/3) je dodeljen spremenljivki CubeRoot. Ni naključje, da je CubeRoot tudi ime funkcije. Če želite funkciji povedati, katero vrednost naj vrne, to vrednost dodelite imenu funkcije.
Klicanje funkcije iz podprocedure
Ker funkcije ne morete izvesti neposredno, jo morate poklicati iz drugega postopka. V isti modul VBA, ki vsebuje funkcijo CubeRoot, vnesite naslednji preprost postopek:
Sub CallerSub()
Odgovor = Kockasti koren (125)
MsgBox Ans
Končni sub
Ko izvedete postopek CallerSub, Excel prikaže sporočilo, ki vsebuje vrednost spremenljivke Ans, ki je 5.
Evo, kaj se dogaja: funkcija CubeRoot se izvede in prejme argument 125. Izračun izvede koda funkcije (z uporabo vrednosti, posredovane kot argument), vrnjena vrednost funkcije pa je dodeljena spremenljivki Ans. Funkcija MsgBox nato prikaže vrednost spremenljivke Ans.
Poskusite spremeniti argument, ki je bil posredovan funkciji CubeRoot, in znova zaženite makro CallerSub. Deluje tako, kot bi moralo – ob predpostavki, da date funkciji veljaven argument (pozitivno število).
Mimogrede, postopek CallerSub bi lahko nekoliko poenostavili. Spremenljivka Ans v resnici ni potrebna, razen če bo vaša koda pozneje uporabila to spremenljivko. Za enak rezultat lahko uporabite to eno samo izjavo:
MsgBox CubeRoot (125)
Klicanje funkcije iz formule delovnega lista
Zdaj je čas, da pokličete ta postopek funkcije VBA iz formule delovnega lista. Aktivirajte delovni list v istem delovnem zvezku, ki vsebuje definicijo funkcije CubeRoot. Nato v katero koli celico vnesite naslednjo formulo:
=kockasti koren (1728)
Celica prikaže 12, kar je dejansko kubni koren 1728.
Kot bi lahko pričakovali, lahko uporabite sklic na celico kot argument za funkcijo CubeRoot. Na primer, če celica A1 vsebuje vrednost, lahko vnesete =CubeRoot(A1) . V tem primeru funkcija vrne število, pridobljeno z izračunom kubičnega korena vrednosti v A1.
To funkcijo lahko uporabite poljubno število krat na delovnem listu. Tako kot vgrajene funkcije Excela, se vaše funkcije po meri pojavijo v pogovornem oknu Vstavi funkcijo. Kliknite gumb v orodni vrstici Vstavi funkcijo in izberite kategorijo Uporabniško določeno. V pogovornem oknu Vstavi funkcijo je navedena vaša lastna funkcija.
Funkcija CubeRoot se pojavi v kategoriji User Defined pogovornega okna Vstavi funkcijo.
Če želite, da se v pogovornem oknu Vstavi funkcijo prikaže opis funkcije, sledite tem korakom:
Izberite Razvijalec → Koda → Makri.
Excel prikaže pogovorno okno Makro, vendar CubeRoot ni prikazan na seznamu. (CubeRoot je funkcija funkcije in ta seznam prikazuje samo podprocedure.) Ne skrbite.
V polje Ime makra vnesite besedo CubeRoot.
Kliknite gumb Možnosti.
V polje Opis vnesite opis funkcije.
Kliknite V redu, da zaprete pogovorno okno Možnosti makra.
Zaprite pogovorno okno Makro s klikom na gumb Prekliči.
To opisno besedilo se zdaj prikaže v pogovornem oknu Vstavi funkcijo.
Oglejte si funkcijo CubeRoot, ki se uporablja v formulah delovnega lista.
Uporaba funkcije CubeRoot v formulah.