Excel VBA - скрин с обновлением экрана при открытии нескольких книг
Вступление:
У меня есть основная рабочая тетрадь (A) и две другие рабочие тетради (B & C). Основная рабочая книга имеет форму пользователя, из которой я делаю следующую последовательность:
Открыть B -> запустить макрос, который вызывает несколько других макросов в B -> сохранить и закрыть B -> Открыть C -> запустить макрос, который вызывает несколько других макросов в C -> сохранить и закрыть C
Проблема:
Моя проблема в том что Application.ScreenUpdating = False
не работает должным образом. Я не возражаю против мерцания экрана, но раздражает то, что запуск кода занимает значительно больше времени, чем когда он работает должным образом.
Код: (комментарии поясняются в следующем разделе)
Sub test()
Application.ScreenUpdating = False
Workbooks.Open ("H:\WorkbookA.xlsm")
'**** tried here ****
Application.Run ("'WorkbookA.xlsm'!TestA")
wbName = "H:\WorkbookA Test.xlsm"
ActiveWorkbook.SaveAs Filename:=wbName
ActiveWorkbook.Close
'**** split ****
Workbooks.Open ("H:\WorkbookB.xlsm")
'**** tried here ****
Application.Run ("'WorkbookB.xlsm'!TestB")
wbName = "H:\WorkbookB Test.xlsm"
ActiveWorkbook.SaveAs Filename:=wbName
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Я пробовал:
Я пробовал вставить Application.ScreenUpdating = False
как раз перед тем как Application.Run
линии, как показано в коде (**** пробовал здесь ****).
Я также тщательно просмотрел свой код и на 100% уверен, что проблема не в ScreenUpdating
включается во время выполнения.
В заключение:
Я попытался разделить последовательность и запустить их отдельно, как показано в коде (**** split ****). Это работает отлично, что очень странно.
Я также заметил, что очень редко код работает как задумано, что меня смущает, так как я выполняю те же самые действия, используя точно такой же набор данных.
Любые идеи или предложения приветствуются:)