【发布时间】:2011-09-20 00:15:07
【问题描述】:
我有一个 COM (C++) API,它侦听来自服务器的数据更新并将这些更新写入工作表。这些更新在 VBA 代码中处理,并且每秒可以到达多次。为了以最有效的方式将这些更新写入工作表,我使用以下前提:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
<UPDATE CODE>
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
事实上,我安排了一个程序来定期执行此操作,其中ScreenUpdating = False 大约持续 20 秒,然后将其设置为 true,以便数据可以更新,然后我再次将其设置为 false。我发现这比显式设置 ScreenUpdates + Calculation 更好,因为我收到的更新频率很高。
问题:
我读过here,excel 在每个禁用它的方法的末尾设置了ScreenUpdating = True,这不是我需要的。
问题:
有没有办法强制 Excel 不自动启用ScreenUpdating?
【问题讨论】:
-
我不知道这个问题的答案。但我唯一的想法是研究 API。除了将 .ScreenUpdating=False 放在代码的最高层次结构之外,看看是否有解决方案会很有趣。
-
我尝试了几种不同的方法:将所有代码放在一个模块中,在每个(是的)方法中调用 .ScreenUpdaing=False ,但这似乎都不起作用。如果我找到解决方案,我会回复。关于我可能使用的 API 的任何想法?
-
根据我的经验(和理解),Excel不会自动重置屏幕更新、计算、显示警报或您的代码设置的任何其他内容。