Domyślnie UDF (funkcje zdefiniowane przez użytkownika) w Excel VBA nie są lotne. Są one przeliczane tylko wtedy, gdy zmieni się dowolny z argumentów funkcji. A funkcja lotna zostanie ponownie obliczony za każdym razem, gdy obliczenia zostaną wykonane w dowolnych komórkach w arkuszu. Rzućmy okiem na prosty przykład, aby wyjaśnić to nieco bardziej.
1. Otwórz Edytor Visual Basic i kliknij Wstaw, Moduł.
Utwórz funkcję o nazwie MOJA FUNKCJA, która zwraca sumę wybranej komórki i komórki poniżej tej komórki.
2. Dodaj następujące linie kodu:
Funkcja MYFUNCTION(komórka jako zakres)
MOJAFUNKCJA = komórka.Wartość + komórka.Przesunięcie(1, 0).Wartość
Koniec funkcji
3. Teraz możesz korzystać z tej funkcji, tak jak z każdej innej funkcji programu Excel.
4. Jest to funkcja nieulotna. Funkcje nieulotne są ponownie obliczane tylko wtedy, gdy zmieni się dowolny z argumentów funkcji. Zmień wartość komórki B2 na 8.
5. Teraz zmień wartość komórki B3 na 11.
Objaśnienie: funkcja nieulotna nie jest obliczana ponownie, gdy zmienia się jakakolwiek inna komórka w arkuszu.
6. Zaktualizuj funkcję w następujący sposób, aby funkcja była nietrwała:
Funkcja MYFUNCTION(komórka jako zakres)
Aplikacja. Lotne
MOJAFUNKCJA = komórka.Wartość + komórka.Przesunięcie(1, 0).Wartość
Koniec funkcji
7. Zmień wartość komórki B3 na 12.
Wynik:
Uwaga: musisz ponownie wprowadzić funkcję, aby stała się niestabilna (lub odśwież ją, umieszczając kursor na pasku formuły i naciskając enter).