Цитата |
---|
Ilya66 написал: P.S. Проблема решена "в лоб" - сравнение времени расчётов при числе итераций = х(заданной для этого листа по умолчанию) и 3х. |
Вылезли недостатки такого решения - более-менее работает при достаточно объёмных вычислениях. А при простых заданиях итераций затрачивается мало, вычисляется быстро, и таймер не успевает толком запуститься. Время нормально не отслеживается, то измеряет какие-нибудь 7 мс, то тут же вообще 0. Пришёл к другому решению:
Код |
---|
Sub ill66()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.MaxIterations = 200 ' число итераций должно быть гарантированно больше максимально требуемого раза в 1,5.
здесь запускаем свои вычисления
qz = [B17] + [Q22] + [Y54] + .... 'записываем сумму вычисленных значений в контрольных ячейках.
Application.MaxIterations = 199 ' уменьшаем число итераций на 1
снова запускаем вычисления
qs = записываем сумму значений в контрольных ячейках
If qz <> qs Then ' если хоть в одной контрольной ячейке результаты вычислений при 200 и 199 итерациях отличаются, сумма будет разной
MsgBox ("BAD!")
Else
MsgBox ("OK")
End If
Application.MaxIterations = 200
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub |
Это работает стабильно и быстро. Возможно, при каких-то вычислениях придётся перед суммированием лепить Round на каждую контрольную ячейку, дабы откинуть мусор, объявить переменные, и т.д. Мне не понадобилось.