Programuojant VBA, funkcija grąžina reikšmę. Galite vykdyti Funkcijų procedūras ir iškviesti funkciją programoje „Excel 2016“. Funkcijos, skirtingai nei antrinės procedūros, gali būti vykdomos tik dviem būdais:
Išbandykite šią paprastą funkciją. Įveskite jį į VBA modulį:
Funkcija CubeRoot(skaičius)
CubeRoot = skaičius ^ (1/3)
Pabaigos funkcija
Ši funkcija yra gana sudėtinga; jis tik apskaičiuoja skaičiaus, kuris jam buvo perduotas kaip argumentas, kubinę šaknį. Tačiau tai suteikia atspirties tašką funkcijoms suprasti. Tai taip pat iliustruoja svarbią funkcijų koncepciją: kaip grąžinti vertę. (Ar atsimenate, kad funkcija grąžina reikšmę, tiesa?)
Atkreipkite dėmesį, kad viena kodo eilutė, sudaranti šią funkcijos procedūrą, atlieka skaičiavimą. Matematikos rezultatas (skaičius iki 1/3 laipsnio) priskiriamas kintamajam CubeRoot. Neatsitiktinai CubeRoot taip pat yra funkcijos pavadinimas. Norėdami nurodyti funkcijai, kokią reikšmę grąžinti, priskiriate šią reikšmę funkcijos pavadinimui.
Funkcijos iškvietimas iš papildomos procedūros
Kadangi negalite vykdyti funkcijos tiesiogiai, turite ją iškviesti iš kitos procedūros. Įveskite šią paprastą procedūrą tame pačiame VBA modulyje, kuriame yra CubeRoot funkcija:
Sub CallerSub()
Atsakymas = CubeRoot (125)
MsgBox Ans
Pabaigos sub
Kai vykdote CallerSub procedūrą, „Excel“ rodo pranešimų laukelį, kuriame yra kintamojo Ans reikšmė, kuri yra 5.
Štai kas vyksta: Vykdoma funkcija CubeRoot ir ji gauna argumentą 125. Skaičiavimas atliekamas pagal funkcijos kodą (naudojant kaip argumentą perduotą reikšmę), o funkcijos grąžinta reikšmė priskiriama kintamajam Ans. Tada funkcija MsgBox rodo kintamojo Ans reikšmę.
Pabandykite pakeisti argumentą, perduodamą funkcijai CubeRoot, ir dar kartą paleiskite CallerSub makrokomandą. Tai veikia taip, kaip turėtų – darant prielaidą, kad funkcijai pateikiate tinkamą argumentą (teigiamą skaičių).
Beje, CallerSub procedūrą būtų galima šiek tiek supaprastinti. Kintamasis Ans tikrai nereikalingas, nebent jūsų kodas naudos tą kintamąjį vėliau. Norėdami gauti tą patį rezultatą, galite naudoti šį teiginį:
MsgBox CubeRoot (125)
Funkcijos iškvietimas iš darbalapio formulės
Dabar atėjo laikas iškviesti šią VBA funkcijos procedūrą iš darbalapio formulės. Suaktyvinkite darbalapį toje pačioje darbaknygėje, kurioje yra CubeRoot funkcijos apibrėžimas. Tada bet kuriame langelyje įveskite šią formulę:
=CubeRoot (1728)
Ląstelėje rodoma 12, kuri iš tikrųjų yra 1728 kubo šaknis.
Kaip ir galima tikėtis, kaip CubeRoot funkcijos argumentą galite naudoti langelio nuorodą. Pavyzdžiui, jei langelyje A1 yra reikšmė, galite įvesti =CubeRoot(A1) . Šiuo atveju funkcija grąžina skaičių, gautą apskaičiuojant reikšmės A1 kubinę šaknį.
Šią funkciją darbalapyje galite naudoti bet kokį skaičių kartų. Kaip ir „Excel“ įtaisytosios funkcijos, pasirinktinės funkcijos rodomos dialogo lange Įterpti funkciją. Spustelėkite įrankių juostos mygtuką Įterpti funkciją ir pasirinkite kategoriją Vartotojo nustatyta. Dialogo lange Įterpti funkciją pateikiama jūsų pačių funkcijų sąrašas.
Funkcija CubeRoot atsiranda dialogo lango Įterpti funkciją kategorijoje Vartotojo nustatyta.
Jei norite, kad dialogo lange Įterpti funkciją būtų rodomas funkcijos aprašymas, atlikite šiuos veiksmus:
Pasirinkite Kūrėjas → Kodas → Makrokomandos.
„Excel“ rodo dialogo langą „Makrokomandos“, bet „CubeRoot“ sąraše nerodomas. („CubeRoot“ yra funkcijų procedūra, o šiame sąraše rodomos tik papildomos procedūros.) Nesijaudinkite.
Lauke Makrokomandos pavadinimas įveskite žodį CubeRoot.
Spustelėkite mygtuką Parinktys.
Lauke Aprašymas įveskite funkcijos aprašymą.
Spustelėkite Gerai, kad uždarytumėte dialogo langą Makrokomandos parinktys.
Uždarykite makrokomandos dialogo langą spustelėdami mygtuką Atšaukti.
Šis aprašomasis tekstas dabar rodomas dialogo lange Įterpti funkciją.
Patikrinkite CubeRoot funkciją, naudojamą darbalapio formulėse.
Funkcijos CubeRoot naudojimas formulėse.