【发布时间】:2013-03-25 13:19:01
【问题描述】:
我还有另一个问题来自“停止 excel 屏幕闪烁”的长系列,但我认为这个问题有点棘手。
我有一位客户在执行宏时需要在其电子表格上显示“进度”栏。
我所做的是,我有一个饼图链接到 2 个单元格,我会根据进度进行调整。为了性能,我禁用了events、ScreenUpdating 并更改了calculation to manual。
然后,我偶尔会快速切换ScreenUpdating on and off 以实际更新进度表。每次我使用它时,它就像一个魅力(现在超过 30 个项目)。
最近,客户带着一个“大”问题来找我。每当我进行快速切换以刷新进度表时,整个 Excel 屏幕(包括上面的所有项目)都会闪烁,这让这家伙发疯了。
有没有人知道如何使用此方法来保持图表更新,同时保持首页不断显示(宏在页面之间跳转)而不会出现屏幕闪烁?像双缓冲之类的东西......
解决方案
信不信由你,但我刚刚找到了解决方案。这太容易了。在 VBA 中,可以仅刷新特定对象,而其余屏幕保持“锁定”状态。例如:
ThisWorkbook.Worksheets("Welcome").ChartObjects(1).Chart.Refresh
感谢大家的意见。
【问题讨论】:
-
可能是一个带有进度条的用户表单? (或类似进度条的东西)这样您就不需要切换
screenupdating? -
理想情况下,我想避免使用表单来实现这一点。它们太丑了,但我会保留它们作为最后的手段......