excel - 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 中的某些内容运行。我可以设置任何其他应用程序标志以使其运行得更快吗?还有其他想法吗?
解决方案
您可以看到,在禁用 excel 的某些功能(如计算模式、屏幕更新、状态栏)时会影响 Excel 的应用,因为“Excel 是对象模型之一,它是 VBA 中使用的所有对象的一个大层次结构”(来源:www .globaliconnect.com)。
所以如果你想通过关闭应用程序功能来运行,你应该等到你回到原来的状态,否则同样的问题会发生。
尽可能简化代码,除非需要
Sub slow_simple_macro()
Workbooks("workbookA.xlsm").Sheets("Sheet1").Range("A1") = "Slow"
End Sub
希望对您有所帮助。祝你有美好的一天。
推荐阅读
- c++ - 在 C++ 中通过零扩展将 char 转换为 int
- sql - 查询位于另一列的变量 + 或 1 内的列
- javascript - 为什么我的变量在反应的构造函数之外未定义?
- node.js - MongoError:BSONObj 超过了最大嵌套对象深度:200
- c++ - 如何从另一个类 LaunchCharacter
- python-3.x - 如何解决“logits 和 labels 必须具有相同的第一维”错误
- android - RecyclerView 仅在特定视图触摸时滚动
- typo3 - 遮罩流体 ViewHelper 不渲染它
- r - 正则表达式替换 R 中字符串的部分/组
- cmd - 运行“net user”user“/domain”命令并以经典 asp 读取结果