Mina egenskrivna excelfunktioner beräknas inte om

Skriver du ibland egna funktioner i Excel?
Har du problem med att egenskrivna funktioner inte uppdaterar sig när de borde?
Det här problemet kanske inte är det vanligaste problemet men eftersom det kom upp häromdagen tänkte jag att det kanske finns några till som undrar.

Det här problemet beror ofta på att man glömt att ta med alla celler som kan påverka resultatet av funktionen i argumentslistan. Det betyder att om värden ändras i celler som inte finns med i argumentslistan så kommer inte funktionen att beräknas om. Detta eftersom det bara är förändringar i de celler/områden som anges i argumentslistan som triggar igång en beräkning av funktionen.
Många löser detta genom att överst i sina funktioner skriva

Application.volatile

MEN – det är inte bra att använda detta då den gör att excel får arbeta mer dvs går långsammare. Det kan också leda till problem i beräkningsordningen av cellerna vilket kan (behöver inte) påverka resultatet. Men om funktionerna beräknas automatiskt när du skrivit in detta så är det en indikation på att funktionen behöver skrivas om.

Här kommer ett kanske lite för enkelt exempel på detta. Man kan väl säga att problemet är vanligt dels om man gör formler som räknar med konstanter man tror aldrig skall ändras eller om man gör formler med många delberäkningar som är beroende av andra cellers resultat. Men, som sagt ett försök till klargörande.

Function p(arg1 As Range)
p = arg1 * Range(”B3”)
End Function

på fliken ser det ut så här:
Exempel fel i argumentslistan

Om jag ändrar värde i A3 så uppdateras C3 och D3 men om jag ändrar värde i B3 ändras värdet inte i C3 utan bara i D3. Detta eftersom B3 inte finns angivet i argumentslistan för p-funktionen men finns i argumentslistan för q-funktionen.

Function q(arg1 As Range, arg2 As Range)
q = arg1 * arg2
End Function

Om man är säker på att man har gjort sin funktion rätt men den ändå inte räknas om så kan man prova med kommandot ctrl+alt+shift+F9. Detta kommando räknar inte bara om cellerna utan beräknar om cellernas ”beroendeordning”eller dependency tree.