При быстром последовательном нажатии кнопки макроса VBA (не кнопки AcitveX) Excel «иногда» вылетает.
В коде VBA интенсивно используются объектные модули, поэтому я подумал, что это проблема сбора мусора,Я явно установил объект верхнего уровня в ничто перед выходом из макроса нажатия кнопки, думая, что это вызовет сборку мусора.Это не сработало.
Это супер расстраивает, потому что это периодически.Может быть, 1 из 10-20 раз.
Показанный код является всего лишь обработчиком нажатия кнопки.Из этого обработчика вызывается около 10000 строк кода, которые я не показывал.Код VBA считывает информацию с листа, выполняет некоторые вычисления, обновляет таблицу Excel на листе и записывает некоторые данные обратно на лист.Я делаю обычное отключение событий и обновлений экрана.
Я просто надеюсь, что кто-то еще столкнулся с быстрым выполнением макросов, приводящим к сбою Excel.Опять же, код VBA работает нормально, похоже, это проблема Excel более высокого уровня?
Public Sub Clicked_UpdateWall_C()
Dim Wall As New CWall_C
Dim ExecutionSuccess As Boolean
Dim errstr As String
ExecutionSuccess = CheckUnits(ActiveSheet.Name, errstr)
If ExecutionSuccess Then ExecutionSuccess = Wall.UpdateWall(ActiveSheet.Name, errstr)
Call CheckError(ExecutionSuccess, errstr)
' This is an attempt to force excel to do garbage collection
Set Wall = Nothing
End Sub
Сообщение об ошибке «Excel прекратил работать», а не ошибка времени выполнения VBA.Можно нажать кнопку «перезагрузить Excel» в диалоговом окне с сообщением об ошибке, и Excel перезапустится, и, как правило, большую часть времени вы не теряете работу.
Поскольку он прерывистый, я не могу опубликовать точный текст диалогового окна аварийного завершения Excel.