刷新用户窗体而不刷新工作表

在使用Excel时,我有很多次都面临着屏幕刷新的问题。

大多数时候,为了加快VBA,程序员将使用Application.ScreenUpdating = False 。 这会暂时(直到取消)停止屏幕刷新。 不幸的是,有些情况下,比如实施进度条,实际上是向用户显示一些进度。 问题是已经提到的命令已经停止了所有的屏幕刷新。

这意味着,即使在你的UserForm你调用了一个命令来改变一个标签(例如哪一个会处理处理事务15的250 ),但是你根本无法显示它。

在这种情况下,有些人做的是暂时启用ScreenUpdating ,然后立即禁用它。 不幸的是,这个过程是不可靠的,就像你有一些困难的过程(把复杂的公式插入到单元格中一样),你不能一直保证它会刷新标签本身。 此外,这种方法的问题是,不仅重新绘制您所需的UserForm ,而且Worksheet ,因此这种“刷新”放慢你的代码相当多。

如何刷新UserForm而不刷新整个Excel

答案很简单。

假设您的用户frm_Main被命名为frm_Main ,那么在您的VBA代码中,您可以简单地调用frm_Main.Repaint

就那么简单!