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.

ändra ett fält till att visa små bokstäver

Fält i word är ett underskattat hjälpmedel till mycket och någon gång skall jag skriva mer om fält men just nu tänkte jag bara visa att man lätt kan ordna så att fält i detta fall ett korsreferensfält visar texten med små bokstäver. Något som jag idag behövde ordna på ett dokument på 60 sidor med massa korsreferenser.

Låt säga att du har ett dokument som ser ut som nedan. Det finns en massa inlagda diagram vars rubrik skrivs med en formatmall som automatiskt skriver in ordet ”Diagram” samt numret på diagrammet. Sen vill man i texten korsreferera till dessa diagramrubriker. Gör man det som vanligt så kommer det se ut som nedan.

Hur gör man då för att korsreferensen skall visa texten med små bokstäver? Jo man använder en sk ”växel”. I detta fall använder man växeln ”Lower”.

Så här:

Alla fält har en fält kod som man ser om man slår Alt+F9. Då ser våra korsreferenser ut så här:

Det man kan göra är att gå in och redigera dessa och lägga till växeln ”\*Lower”
så att fälten ser ut så här
{ REF _ref317095172 \w\h\*Lower}
Sen döljer man fältkoderna mha ALT+F9 igen och klickar F9 för att uppdatera fältet.
Nu ser det ut så här istället

Behöver man göra detta på många fält kan man istället använda detta lilla macro.