Jeden z czytelników zadał mi niedawno pytanie:
W Excelu utworzyłem moduł MODULE1 w nim Funkcja
w której tylko jedna instrukcja
Range(„A1″).value = 15
Pojawia się bład ” #ARG! ”
skad to ?
Jest to EXCEL 2007.
Funkcje UDF (User Defined Function, Funkcje zdefiniowane przez użytkownika) rozszerzają możliwości naszych formuł. Tak jak standardowe funkcje, przyjmują one jakieś argumenty (lub nie) i zawsze zwracają dokładnie jedną wartość.
Funckję UDF pisze się tak jak standardowe funkcje VBA. Muszą jednak spełniać szereg warunków, aby działały prawidłowo w formułach.
- Muszą być napisane ręcznie w module, nie można ich nagrać.
- Nie mogą zmieniać struktury komórki, arkusza, ani pliku. Nawet komórki, w którą została wpisana.
- Nie mogą zmieniać zawartości komórek inaczej niż przez zwrócenie wartości.
- Funkcje UDF mogą wywoływać inne procedury, jednak podlegają one wtedy tym samym ograniczeniom.
Podsumowując, mogą jedynie zmieniać argumenty w wartość zwracaną.
Jak widać jedyna instrukcja w powyższej funkcji jest problemem. Funkcja UDF nie może bezpośrednio zmieniać wartości komórek. Nie ma na to absolutnie żadnego obejścia ani tricku.