У ВБА програмирању, функција враћа вредност. Можете извршити процедуре функције и позвати функцију у програму Екцел 2016. Функције, за разлику од потпроцедура, могу се извршити на само два начина:
Испробајте ову једноставну функцију. Унесите га у ВБА модул:
Функција ЦубеРоот(број)
ЦубеРоот = број ^ (1/3)
Енд Фунцтион
Ова функција је прилично слаба; он само израчунава кубни корен броја који му је прослеђен као аргумент. То, међутим, пружа полазну тачку за разумевање функција. Такође илуструје важан концепт о функцијама: како вратити вредност. (Сећате се да функција враћа вредност, зар не?)
Приметите да један ред кода који чини ову процедуру функције врши прорачун. Резултат математике (број на степен 1/3) се додељује променљивој ЦубеРоот. Није случајно, ЦубеРоот је такође назив функције. Да бисте рекли функцији коју вредност да врати, доделите ту вредност имену функције.
Позивање функције из Суб процедуре
Пошто не можете директно да извршите функцију, морате је позвати из друге процедуре. Унесите следећу једноставну процедуру у исти ВБА модул који садржи функцију ЦубеРоот:
Суб ЦаллерСуб()
Одговор = ЦубеРоот(125)
МсгБок Анс
Енд Суб
Када извршите ЦаллерСуб процедуру, Екцел приказује оквир са поруком који садржи вредност променљиве Анс, која је 5.
Ево шта се дешава: функција ЦубеРоот се извршава и добија аргумент од 125. Израчунавање се врши помоћу кода функције (користећи вредност која је прослеђена као аргумент), а враћена вредност функције се додељује променљивој Анс. Функција МсгБок затим приказује вредност променљиве Анс.
Покушајте да промените аргумент који је прослеђен функцији ЦубеРоот и поново покрените макро ЦаллерСуб. Ради баш као што би требало — под претпоставком да дате функцији валидан аргумент (позитиван број).
Иначе, ЦаллерСуб процедура би се могла мало поједноставити. Променљива Анс није заиста потребна осим ако ваш код касније не користи ту променљиву. Можете користити ову једну изјаву да добијете исти резултат:
МсгБок ЦубеРоот(125)
Позивање функције из формуле радног листа
Сада је време да позовете ову процедуру ВБА функције из формуле радног листа. Активирајте радни лист у истој радној свесци која садржи дефиницију функције ЦубеРоот. Затим унесите следећу формулу у било коју ћелију:
=ЦубеРоот(1728)
Ћелија приказује 12, што је заиста кубни корен од 1,728.
Као што можете очекивати, можете користити референцу ћелије као аргумент за функцију ЦубеРоот. На пример, ако ћелија А1 садржи вредност, можете да унесете =ЦубеРоот(А1) . У овом случају, функција враћа број добијен израчунавањем кубног корена вредности у А1.
Ову функцију можете користити било који број пута на радном листу. Као и Екцел-ове уграђене функције, ваше прилагођене функције се појављују у дијалошком оквиру Уметање функције. Кликните на дугме Инсерт Фунцтион на траци са алаткама и изаберите категорију Кориснички дефинисано. Дијалог Уметање функције наводи вашу сопствену функцију.
Функција ЦубеРоот се појављује у категорији Усер Дефинед дијалога Инсерт Фунцтион.
Ако желите да дијалошки оквир Уметање функције приказује опис функције, следите ове кораке:
Изаберите Програмер → Код → Макрои.
Екцел приказује дијалог Макро, али се ЦубеРоот не појављује на листи. (ЦубеРоот је функција функције, а ова листа приказује само подпроцедуре.) Не брините.
Откуцајте реч ЦубеРоот у пољу Име макроа.
Кликните на дугме Опције.
Унесите опис функције у поље Опис.
Кликните на ОК да бисте затворили дијалог Макро опције.
Затворите дијалог Макро кликом на дугме Откажи.
Овај описни текст се сада појављује у дијалогу Уметање функције.
Погледајте функцију ЦубеРоот која се користи у формулама радног листа.
Коришћење функције ЦубеРоот у формулама.