În mod implicit, UDF (Funcții definite de utilizator) în Excel VBA nu sunt volatile. Ele sunt recalculate numai atunci când se schimbă oricare dintre argumentele funcției. A funcție volatilă va fi recalculat ori de câte ori are loc calculul în orice celule din foaia de lucru. Să aruncăm o privire la un exemplu ușor pentru a explica acest lucru un pic mai mult.
1. Deschideți Editorul Visual Basic și faceți clic pe Inserare, modul.
Creați o funcție numită MYFUNCTION care returnează suma celulei selectate și a celulei de sub această celulă.
2. Adăugați următoarele linii de cod:
Funcția MYFUNCTION (celulă As Range)
MYFUNCTION = celulă.Valoare + celulă.Offset (1, 0). Valoare
Funcția de sfârșit
3. Acum puteți utiliza această funcție, la fel ca orice altă funcție Excel.
4. Aceasta este o funcție nevolatilă. Funcțiile non-volatile sunt recalculate numai atunci când se schimbă oricare dintre argumentele funcției. Schimbați valoarea celulei B2 la 8.
5. Acum schimbați valoarea celulei B3 la 11.
Explicație: funcția non-volatilă nu este recalculată atunci când se schimbă orice altă celulă de pe foaie.
6. Actualizați funcția după cum urmează pentru a face funcția volatilă:
Funcția MYFUNCTION (celulă As Range)
Aplicație. Volatil
MYFUNCTION = celulă.Valoare + celulă.Offset (1, 0). Valoare
Funcția de sfârșit
7. Schimbați valoarea celulei B3 la 12.
Rezultat:
Notă: trebuie să introduceți din nou funcția pentru ao face volatilă (sau reîmprospătați-o plasând cursorul în bara de formule și apăsând Enter).