У меня странная проблема с порядком вычислений в Excel - зависимая ячейка вычисляется перед предыдущей ячейкой с пустым значением параметра при установке грязного диапазона. Есть ли способ обнаружить эти «поддельные» звонки? Это критично для меня, так как я запускаю некоторую умную бизнес-логику в реальном приложении, и эти «фальшивые» вызовы нарушают всю логику.Кроме того, эти «фальшивые» вызовы, если они зарегистрированы в RTD, не привязывают его к теме должным образом и, следовательно, не уведомляют об отключении темы.
Последняя версия Excel 2010/32bit.
Чтобы проиллюстрировать проблему, я создал простую функцию:
Function Fnc(param2 As String) As String
Fnc = Application.ThisCell.Address
Debug.Print (Application.ThisCell.Address & " - " & param2)
End Function
И процедуру:
Sub SetDirty()
Range("B1:C1").Dirty
End Sub
И простой лист:
$A$1 =fnc(A1) =fnc(B1)
в ячейки A1, B1, С1.
И результат очевиден:
$A$1 $B$1 $C$1
Если я пересчитаю ( CTRL+ Alt+ Shift+ F9) Как и ожидалось, я получаю:
$B$1 - $A$1
$C$1 - $B$1
Но самое интересное. Если я запускаю SetDirty:
$C$1 - <---- Откуда это?
$B$1 - $A$1
$C$1 - $B$1
Спасибо за любой вклад. Я бы предпочел решение, которое решает эту проблему, а не обходной путь, поскольку он уже является частью множества обходных путей.