蟒< - > excel:ScreenUpdating使工作表闪烁

时间:2012-04-24 15:43:16

标签: excel excel-vba vba

在我的python代码中,我在将数据写入工作表之前将ScreenUpdating设置为False,然后将其设置回True。 ScreenUpdating设置为True后,工作表闪烁。

代码段:

self.xlsApp.ScreenUpdating = False                                        
#Write some data here to excel sheet      
self.xlsApp.ScreenUpdating = True

我希望摆脱这种闪烁,但仍然使用ScreenUpdating。

任何想法??

此致 奥马尔。

1 个答案:

答案 0 :(得分:0)

如果设置ScreenUpdating=true,某些(如果不是全部)Excel版本会完全重绘自己。我认为你无能为力。

但是,您可以有条件地将ScreenUpdating设置为falsetrue通常,只执行有时(或很少)的代码真的改变了数据。因此,如果您在代码中执行的工作表更新仅偶尔会更新,则可以向false初始化一个标记,然后将ScreenUpdating设置为false并将标记设置为true } 仅当代码确实进行更新时。作为更新后的最后一步,只有在设置了标志时才将ScreenUpdating设置回true

这样,您只会看到真正发生数据更改的情况下的闪烁。这已经足以在大多数情况下摆脱闪烁效应。

为了避免完全闪烁,您可以尝试使用Windows API函数锁定Excel窗口的内部,按照概述执行代码,然后解锁。这仍然会产生闪烁效果,但不可见,因为重绘过程没有显示。解锁后,重绘仍然会显示,但不会清除带有背景颜色的矩形区域