Екцел ВБА кориснички дефинисана функција (УДФ)
Мицрософт нам нуди много уграђених функција за убрзавање рада у екцелу. Међутим, користећи ВБА кодирање можемо креирати сопствене функције и те функције се технички називају „Кориснички дефинисане функције“ (УДФ). Такође се називају и „прилагођеним функцијама“ у екцелу ВБА.
Било која формула којој се може приступити са радног листа са комадом кода назива се УДФ. Једноставно речено, било која формула која није уграђена, али је доступна у програму Екцел, назива се Кориснички дефинисане функције.

Како створити кориснички дефинисане функције?
Иако је УДФ део нашег модула, они нису део наше редовне потпрограма у ВБА. То се у ВБА назива поступак функције. Попут тога како слично започињемо кодирање макронаредби речју СУБ, ово морамо започети коришћењем речи „Функција“. Потпроцедура има почетак и крај, слично функцијској процедури као и почетак и крај.
Пример # 1 - Креирајте једноставну функцију сума УДФ-а
Направићемо сопствену СУМ функцију у екцелу додавањем два броја.
- Да бисте започели кодирање, започните реч „Функција“ у једном од модула.

- Као и како слично именујемо макро, и нашој Функцији морамо дати име. Ово име се користи као име формуле.

За разлику од потпрограма, не можемо једноставно притиснути ентер да бисмо креирали процедуру, али овде морамо споменути аргументе.
На пример, погледајте доњу синтаксу функције радног листа СУМ.
Број 1, број 2 су аргументи функције СУМ.
- Слично томе, морамо споменути своје аргументе.

Овде сам аргументе прогласио као „к као целобројно“ и „и као целобројно“. Будући да додајемо нумеричку вредност, треба да доделимо тип података само као нумерички тип података.
Након декларације аргумената, доделио сам и тип повратка целог броја, јер је резултат који даје функција „ОурСум“ такође нумеричка вредност.
- Сада унутар функције, морамо споменути формулу коју ћемо користити. Овде за почетак треба да користимо функцију.

Споменули смо да би назив формуле „ ОурСум “ требао додати к и и.
- Ок, сачувајте код и идите на радни лист.

- Овде сам унео неколико бројева. Отворите знак једнакости и почните да куцате ОурСум. Овде можете видети име формуле.

- Као што одабиремо ћелије, слично одабиремо две ћелије одвојено.

- Након одабира две ћелије, притисните тастер ентер да бисте добили резултате.

Дакле, ради потпуно исто као и наша редовна СУМ функција.
- Ок, сад ћу променити бројеве.

- Сада ћу поново применити функцију коју смо креирали.

Ох !!! Добили смо вредности грешке, осим за прву ћелију.
Сигурно размишљате о томе зашто смо добили грешку.
Ако посматрате ћелије А2 и Б2, имамо вредности 48170 и 21732. Будући да смо тип података доделили као Интегер, он не може да садржи било који број већи од 32767. То је разлог што смо добили екцел грешку као #НУМ !.
Сада ћу додати бројеве мање од 32767.

На горњој слици су сви бројеви целобројни, односно мањи од 32767.
У првој ћелији смо добили резултате. Али у другој ћелији, тј. Ц2 ћелији, добили смо вредност грешке као # ВРЕДНОСТ !.
Иако су оба броја мања од 32767, и даље имамо грешку.
То је зато што смо крајњи резултат прогласили и целим бројем.

Дакле, када додамо 16000 и 17229, добићемо вредност попут 33229, што је више од ограничења целобројног типа података од 32767. Дакле, крајњи резултат је вредност грешке.
Пример # 2 - Створите функцију за тестирање логичких вредности
Направићемо још једну функцију за тестирање логичких вредности. Потребна нам је функција која враћа „Добро“ ако је број> = 60, а потребан нам је резултат као „Лоше“ ако је број <= 50.
Корак 1: Покрените поступак функције и дајте му име поступак.

Корак 2: Аргумент наведите као ТестСцоре као Интегер.

Корак 3: Наш крајњи резултат треба да буде „Добар“ или „Лош“, тако да резултат треба да буде у низу.
Корак 4: Прво, морамо да тестирамо да ли је резултат> = 60 или не. Користите ИФ услов за тестирање.

Корак 5: Ако је резултат теста> = 60, треба нам функција да резултат вратимо као „Добро“. Дакле, ТестРесулт = "Добро."

Корак 6: Ако је резултат теста мањи од 60, резултат функције би требао бити „Лош“.

Ок, готови смо.
- Сачувајте код и идите на радни лист.

Овде сам унео неколико бројева као тест тест.
- Примените функцију коју смо креирали да бисмо добили резултате.

- Изаберите ћелију и притисните ентер.

О томе се ради УДФ.