Funkcja zdefiniowana przez użytkownika Excel VBA (UDF)
Microsoft oferuje nam wiele wbudowanych funkcji przyspieszających pracę w programie Excel. Jednak za pomocą kodowania VBA możemy tworzyć własne funkcje, które technicznie nazywa się „ funkcjami zdefiniowanymi przez użytkownika” (UDF). W programie Excel VBA są również nazywane „funkcjami niestandardowymi”.
Każda formuła, do której można uzyskać dostęp z arkusza roboczego z fragmentem kodu, nazywana jest UDF. Mówiąc najprościej, każda formuła, która nie jest wbudowana, ale dostępna w programie Excel, nazywa się funkcjami zdefiniowanymi przez użytkownika.

Jak tworzyć funkcje zdefiniowane przez użytkownika?
Mimo że UDF jest częścią naszego modułu, nie są one częścią naszej zwykłej podprogramu w VBA. Nazywa się to procedurą funkcji w VBA. Podobnie jak w przypadku, gdy podobnie zaczynamy kodowanie makr od słowa SUB, musimy zacząć od słowa „Funkcja”. Procedura podrzędna ma początek i koniec, podobnie procedura funkcji ma początek i koniec.
Przykład nr 1 - Utwórz prostą funkcję sumy UDF
Stworzymy własną funkcję SUMA w programie Excel, dodając dwie liczby.
- Aby rozpocząć kodowanie, zacznij od słowa „Funkcja” w jednym z modułów.

- Podobnie jak w przypadku podobnej nazwy makra, musimy również nadać nazwę naszej funkcji. Ta nazwa jest używana jako nazwa formuły.

W przeciwieństwie do podprogramu, nie możemy po prostu nacisnąć enter, aby utworzyć procedurę, ale musimy tutaj wspomnieć o argumentach.
Na przykład spójrz na poniższą składnię funkcji arkusza SUMA.
Numery 1 i 2 to argumenty funkcji SUMA.
- Podobnie musimy wspomnieć o naszych argumentach.

Tutaj zadeklarowałem argumenty jako „x jako liczba całkowita” i „y jako liczba całkowita”. Ponieważ dodajemy wartość liczbową, musimy przypisać typ danych tylko jako numeryczny typ danych.
Po zadeklarowaniu argumentów przypisałem również zwracany typ liczby całkowitej, ponieważ wynik podany przez funkcję „OurSum” jest również wartością liczbową.
- Teraz w funkcji musimy wspomnieć o formule, której będziemy używać. Tutaj musimy użyć funkcji na początek.

Wspomnieliśmy, że nazwa formuły „ OurSum ” powinna dodawać x i y.
- Ok, zapisz kod i przejdź do arkusza.

- Wpisałem tutaj kilka liczb. Otwórz znak równości i zacznij pisać OurSum. Tutaj możesz zobaczyć nazwę formuły.

- Podobnie jak w przypadku wyboru komórek w podobny sposób wybieramy dwie komórki osobno.

- Po wybraniu dwóch komórek naciśnij klawisz Enter, aby uzyskać wyniki.

Działa więc dokładnie tak samo, jak nasza zwykła funkcja SUMA.
- Ok, teraz zmienię numery.

- Teraz ponownie zastosuję utworzoną przez nas funkcję.

O!!! Otrzymaliśmy wartości błędów z wyjątkiem pierwszej komórki.
Musisz się zastanawiać, dlaczego mamy błąd.
Jeśli obserwujesz komórki A2 i B2, mamy wartości 48170 i 21732. Ponieważ przypisaliśmy typ danych jako Integer, nie może on pomieścić żadnej liczby większej niż 32767. To jest powód, dla którego otrzymaliśmy błąd programu Excel jako #NUM !.
Teraz dodam liczby mniejsze niż 32767.

Na powyższym obrazku wszystkie liczby są liczbami całkowitymi, tj. Mniejszymi niż 32767.
W pierwszej komórce otrzymaliśmy wyniki. Ale w drugiej komórce, tj. Komórce C2, otrzymaliśmy wartość błędu #ARG !.
Mimo że obie liczby są mniejsze niż 32767, nadal występuje błąd.
Dzieje się tak, ponieważ zadeklarowaliśmy wynik końcowy również jako liczbę całkowitą.

Więc kiedy dodamy 16000 i 17229, otrzymamy wartość taką jak 33229, która jest większa niż limit liczby całkowitej wynoszący 32767. Zatem wynik końcowy jest wartością błędu.
Przykład 2 - Utwórz funkcję do testowania wartości logicznych
Stworzymy jeszcze jedną funkcję do testowania wartości logicznych. Potrzebujemy funkcji, która zwraca „Dobra”, jeśli liczba wynosi> = 60, a wynik jako „Zły”, jeśli liczba wynosi <= 50.
Krok 1: Uruchom procedurę funkcji i nadaj jej nazwę.

Krok 2: Podaj argument jako TestScore jako liczbę całkowitą.

Krok 3: Nasz wynik końcowy powinien być „dobry” lub „zły”, więc wynik powinien być w postaci ciągu znaków.
Krok 4: Najpierw musimy sprawdzić, czy wynik wynosi> = 60, czy nie. Użyj warunku IF, aby przetestować.

Krok 5: Jeśli wynik testu wynosi> = 60, potrzebujemy funkcji, która zwraca wynik jako „Dobry”. Więc TestResult = „Good”.

Krok 6: Jeśli wynik testu jest niższy niż 60, wynik funkcji powinien mieć wartość „Zły”.

OK, gotowe.
- Zapisz kod i przejdź do arkusza.

Wprowadziłem tutaj kilka liczb jako wynik testu.
- Zastosuj funkcję, którą stworzyliśmy, aby uzyskać wyniki.

- Wybierz komórkę i naciśnij Enter.

O to właśnie chodzi w UDF.