Определить, когда произошёл пересчёт нужной пользовательской функции- Visual Basic(Бейсик)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Для того, чтобы узнать, когда произошёл пересчёт необходимой пользовательской функции, можно:
 
воспользоваться переменной, значение которой 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

Leave a Comment