Why don't spreadsheet cells that call VBA functions automatically update themselves when you change other cells?

Is there any way to overcome this?

I have autocalculate switched on and my macros are enabled, whats stopping the (public) function (in a module) from being called?

I know the function works because if I double click it and immediately hit enter, it updates to the correct value.