Изменить на Application.Calculation xlAutomati c без перерасчета - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть VBA, в которой я в первый раз вычисляю данные на листе Excel, используя xlManual.
После завершения процедуры он переключается обратно на xl.Automatic.

Sub Run_Procedure()
Application.Calculation = xlManual
Call Procedure
Application.Calculation = xlAutomatic
End Sub

Все это работает как надо


Теперь мне интересно, есть ли способ изменить приложение на xlAutomatic без фактически re-calculating файла.

По сути, я просто хочу, чтобы после выполнения procedure User продолжал нормально работать с файлом.
Чтобы избежать времени загрузки после procedure, оно не должно рассчитываться снова.

У вас есть идеи для этого?

1 Ответ

0 голосов
/ 20 апреля 2020

Не проверено, но единственный способ, которым я могу придумать, - это использовать Application.CalculationInterruptKey и Application.SendKeys().

Возможно что-то вроде ...

With Application
    .CalculationInterruptKey = xlEscKey
    .Calculation = xlCalculationAutomatic
    .SendKeys ("{esc}")
    Debug.Print .CalculationState
End With

Из того, что у меня есть прочитайте это, чтобы прервать пересчет листа, отправив нажатие клавиши esc в приложение, но я не смог подтвердить, что оно работает (поскольку у меня нет достаточно больших данных, для вычисления которых требуется некоторое время.

В примечании, если вы хотите вернуть CalculatonInterruptKey обратно к его первоначальному значению, просто присвойте переменную ее значение перед приведенным выше кодом, а затем после кода назначьте переменную обратно свойству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...