首页 > 解决方案 > Excel 在打开其他电子表格时运行缓慢

问题描述

我在工作簿 A 中运行了一个非常简单的 VBA 代码,当另一个特定的工作簿 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 中的某些内容运行。我可以设置任何其他应用程序标志以使其运行得更快吗?还有其他想法吗?

标签: excelvba

解决方案


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

所以如果你想通过关闭应用程序功能来运行,你应该等到你回到原来的状态,否则同样的问题会发生。

尽可能简化代码,除非需要

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

希望对您有所帮助。祝你有美好的一天。


推荐阅读