Для того, чтобы узнать, когда произошёл пересчёт необходимой пользовательской функции, можно:
воспользоваться переменной, значение которой False/True будет зависеть от пересчёта нужной UDF. И, конечно же, не забыть объявить эту переменную как Public.
добавить в нужную пользовательскую функцию инструкцию, которая будет отвечать за изменение значения вышеупомянутой переменной.
использовать, например, событие рабочего листа Worksheet_Calculate() вкупе с небольшой проверкой и восстановлением первоначального значения переменной.
Public iCalculate As Boolean
Public Function MyFunction()
'Здесь производятся необходимые вычисления
'MyFunction = Result
iCalculate = True
End Function
Private Sub Worksheet_Calculate()
If iCalculate = True Then
iCalculate = False
MsgBox "Произошёл пересчёт нужной UDF", , Time$
'Функцию MsgBox можно заменить на нужные инструкции
End If
End Sub