I can duplicate this also (in Excel 2000 SP-3). Try this. Build a simple
workbook with a UDF. Edit the UDF, compile the code module, exit the VBE
editor, then save the workbook. Without changing any cells on the worksheet,
bring up the Tools|Options dialog box, goto the Calculation tab, and press
the "Calc Sheet" button. Notice that the worksheet does NOT update, even
though the UDF was changed. This is because the recalculation engine does
not see any cells that have changed, either cells that are arguments to the
UDF or the cell with the UDF itself. Even if a recalculation is triggered by
other cells that do not call the UDF, any cells that contain the UDF will
not update, since none of their precedent cells were changed.
Even if you declare the UDF Volatile inside the function when you edit it,
the worksheet will not update the results of any cells that use the UDF if
no precedent cells are changed. The UDF has to be called at least once
before the Volatile flag actually gets set for that UDF. Using the "Calc
Sheet" button will not update the cells that contain the UDF. Once the UDF
has been called once (with Application.Volatile declared inside the UDF),
then the UDF can be edited and it will update all cells on the worksheet in
the normal fashion when either the "Calc Sheet" button is clicked or any
other change that triggers a recalculation occurs.