简介:
我有一个主工作簿(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 ****)。效果很好,这很奇怪。
我还注意到,代码很少能按预期工作,这使我感到困惑,因为我使用完全相同的数据集执行了完全相同的动作。
欢迎任何想法或投入:)