【问题标题】:Screen Flickering VBA Excel屏幕闪烁 VBA Excel
【发布时间】:2015-11-05 07:05:09
【问题描述】:

这是我自己阅读了很多但找不到解决方案的内容。 我有一个大约 10,000 行的程序,其中我有一个附加到特定命令按钮的程序。这会计算一些复杂的方程。

我像往常一样使用 Application.ScreenUpdating = False 启动代码,并在主过程结束之前将其变为 True。然而,我的 Excel 工作表的上半部分(靠近菜单栏)一直闪烁约 10 秒,直到结果出现。我尝试禁用事件,以及将计算转换为手动,但没有任何帮助。甚至尝试在与主程序相关的子程序开头提到屏幕更新为false。

对此的任何建议将不胜感激。谢谢!

【问题讨论】:

  • 是否有为工作表事件运行的事件代码?喜欢Worksheet_ChangeWorksheeet_Activate 或类似的东西?
  • 不,不是。只是非常简单的循环和变量,没有任何事件。

标签: vba excel


【解决方案1】:

尝试在子的开头添加这个:

Application.EnableEvents = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual

这只是在结束之前:

Application.EnableEvents = True
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic

这应该会有所帮助。但请注意,在运行复杂的宏时,我的屏幕有时也会闪烁(Excel 看起来好像没有响应,但它正在后台运行)。

【讨论】:

  • 感谢您的回复。似乎它的阴影更好,但屏幕闪烁。结果当然每次都来。但是,对于执行小型计算,这不会发生。我还不是 VBA 的专业人士。可能是我的编码可能没有那么有效。不过再次感谢您。
  • 如果你的代码不是太长,你可以贴出来看看有没有什么建议。你经常使用.Select.Activate 吗?
  • 是的,我在剧情中使用过。但是即使我注释掉 plot 子过程,计算过程中屏幕也会闪烁。而且计算非常干净。循环很复杂,但逻辑上很简单。不幸的是,我无法上传整个代码。它大约有 10.000 行,并与机密工作协作。
  • @Athrika - 嗯,这可能只是由于宏的大小/复杂性。如果让它运行,它是否成功正确完成?
  • 是的,对于小数据..它不会产生任何问题(完全没有闪烁),对于大数据,它需要大约 5 秒,但代码每次都会完全执行。跨度>
猜你喜欢
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多