Strony

  • Strona główna
  • Kurs Excel
  • Kurs VBA
  • Moje narzędzia
  • Ciekawe Strony

Pytanie użytkownika - funkcja UDF

Dzień dobry!

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.

Odpowiedź

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.