用户停止滚动时要启动的macros(刷新屏幕以防止与形状相关的视觉错误)

错误背后什么我有一个工作簿,其中几张有很多形状(包括箭头)。 滚动浏览表单时,发生形状不刷新。 箭头变得不可见,形状轮廓变成了虚线。 这些形状还是非常的 – 有时箭头只是部分隐形。 在线search后,我发现这是一个已知的错误,当一张表有很多的形状。 这是不相关的我的显示器刷新 – 我有双显示器,并从其中一个到另一个不刷新。 有几种方法可以做到这一点,1)select形状背后的单元格2)最小化和最大化excel 3)select形状本身(有时工作)。

我的解决方法和问题,我做了一个macros来刷新形状。 基本上它select所有的单元格,然后返回到活动单元格的状态。 我必须在VBE中启动macros或者现在使用一个button,但它完美的工作:

Sub refreshShapes() Application.ScreenUpdating = False Dim active As Range Set active = ActiveCell Cells.Select active.Select Application.ScreenUpdating = True End Sub 

现在,我希望每次用户滚动工作表并停止滚动时都会启动该macros,因为错误只发生在那里。 有没有办法做到这一点,而不使用计时器? 有没有另一种已知的方法来防止这个bug /以更好的方式工作?

如果您不想使用Timer尝试在其中一个可用的Worksheet events包括工作表刷新macros。 在这里查看完整列表。 我可能会去与SelectionChange事件。

您可能还想分析这篇文章 ,了解如何捕获滚动事件。

顺便说一句。 从这个线程看来,一个简单的DoEvents将会做,而不是改变ApplicationScreenUpdating属性。