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 ****). Это работает отлично, что очень странно.

Я также заметил, что очень редко код работает как задумано, что меня смущает, так как я выполняю те же самые действия, используя точно такой же набор данных.

Любые идеи или предложения приветствуются:)

0 ответов

Другие вопросы по тегам