打开其他电子表格时Excel变慢

时间:2018-11-08 16:34:11

标签: excel vba

我有一个非常简单的VBA代码在工作簿A中运行,而在打开另一个特定的工作簿B时,这相当慢。我无权访问工作簿B内的任何宏,因此我不确定那里是否发生了任何奇怪的事情。

我环顾四周,并附带了这些最小的代码,这些代码浓缩了我在stackoverflow和许多Excel特定站点中找到的典型解决方案,但是运行仍然需要很长时间。

' Code in workbook A
Sub slow_simple_macro()
With Application
    .Calculation = xlCalculationManual
    .EnableEvents = False
    .ScreenUpdating = False
    .DisplayStatusBar = False
End with

Workbooks("workbookA.xlsm").Sheets("Sheet1").Range("A1") = "Slow" ' This line takes about half a second to run when workbook B is open

With Application
    .Calculation = xlCalculationAutomatic
    .EnableEvents = True
    .ScreenUpdating = True
    .DisplayStatusBar = True
End with
End Sub

我猜测禁用事件不足以阻止工作簿B中的某些内容运行。我是否可以设置其他应用程序标志以使其运行更快?还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

在禁用诸如计算模式,屏幕更新,状态栏之类的excel功能时,您会看到,这会影响Excel的应用,因为“ Excel是对象模型之一,它是VBA中使用的所有对象的较大层次结构”来源:www.globaliconnect.com)。

因此,如果要通过关闭应用程序功能运行,则应等到重新设置为原始状态,否则会发生同样的问题。

除非需要,否则最好简化代码

Sub slow_simple_macro()
Workbooks("workbookA.xlsm").Sheets("Sheet1").Range("A1") = "Slow" 
End Sub

希望您发现它很有帮助。祝你有美好的一天。