Excel VBA-打开多个工作簿时筛选异常

时间:2018-09-27 11:36:19

标签: excel vba performance subroutine

简介:
我有一个主工作簿(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 个答案:

没有答案