我多年前开发的基于Excel的长期运行的高端应用程序在Excel 2007和2010中运行得很好,在Excel 2013和2016中看起来像业余时间,因为Application.ScreenUpdating = False
不再可靠地工作。
当JavaScript代码将预格式化的工作表从宏工作簿复制到新工作簿时,屏幕显然会解冻,尽管其他情况也会触发它。
我已经看到了关于这个主题的建议“摆弄代码”或“在子例程中调用代码”的线程。不幸的是,我必须维护数百个Excel应用程序,每个应用程序都有数千行代码,还有数百个即将迁移到Office 2016的用户,所以重写不是一个选择。
6条答案
按热度按时间kknvjkwl1#
以下是一些想法:
应用程序.计算= xlCalculationManual
然后,在代码的末尾将其设置为:
字符串
jslywgbw2#
这里有一个技术,有助于减少 Flink 和保留状态栏消息。
字符串
7ivaypg93#
我们已经处理这个问题很长一段时间了,因为我的工具确实显示了突然完全静态的实时动画图表-我们会因为至少有一个 Flink 的动画而死亡。
最初我们试图通过强制屏幕更新来强制动画,但这并不起作用。(复制粘贴太多次)我们偶然发现了一个解决方案,它看起来确实有效,但同样令人难以置信。在每个
Application.ScreenUpdating = True
之后,我们添加了x3次DoEvents。在某些系统上,x2次DoEvents可以工作,但在各种Office版本上,x3次似乎更可靠。我们的动画回来了:-)字符串
我们还没有在
Application.ScreenUpdating = False
语句中使用它,但它可能会在那里发挥一些魔力。5tmbdcev4#
在浏览了很多论坛后,我相信 Flink 问题与SDI vs MDI有关。有人建议将应用程序设置为不可见。
字符串
这解决了我的 Flink 问题,但我不喜欢excel应用程序完全消失,然后突然重新出现在用户面前。
我能够解决这个问题,我喜欢使用一个变通办法这个'窗口是顶部'的问题。
通过单独保留主窗口,并强制其他工作簿变为不可见,让代码运行,然后将它们恢复为可见,它停止了 Flink 。
型
记得带真的回来就行了。
同样,我的脚本在Excel 2010中工作得很好,但是在“升级”到2013之后,这个 Flink 问题开始了。
tzxcd3kk5#
我也遇到了同样的问题,信不信由你,它是通过拔下并重新连接我的第二台显示器的电缆解决的。这条电缆使用的是HDMI到VGA转换器。
nszi6y056#
对我来说,只有“Application.ScreenUpdating = False”没有完全治愈 Flink 。计算也会导致 Flink 。添加“Application.Calculation = xlCalculationManual”解决了 Flink 问题。所以,代码应该是这样的:
Application.ScreenUpdating = False Application.Calculation = xlCalculation Manual
重要的代码在这里…
Application.ScreenUpdating = True Application.Calculation = xlCalculation Automatic