刷新用户窗体而不刷新工作表
在使用Excel时,我有很多次都面临着屏幕刷新的问题。
大多数时候,为了加快VBA,程序员将使用Application.ScreenUpdating = False
。 这会暂时(直到取消)停止屏幕刷新。 不幸的是,有些情况下,比如实施进度条,实际上是想向用户显示一些进度。 问题是已经提到的命令已经停止了所有的屏幕刷新。
这意味着,即使在你的UserForm
你调用了一个命令来改变一个标签(例如哪一个会处理处理事务15的250 ),但是你根本无法显示它。
在这种情况下,有些人做的是暂时启用ScreenUpdating
,然后立即禁用它。 不幸的是,这个过程是不可靠的,就像你有一些困难的过程(把复杂的公式插入到单元格中一样),你不能一直保证它会刷新标签本身。 此外,这种方法的问题是,不仅重新绘制您所需的UserForm
,而且Worksheet
,因此这种“刷新”放慢你的代码相当多。
如何刷新UserForm
而不刷新整个Excel ?
答案很简单。
假设您的用户frm_Main
被命名为frm_Main
,那么在您的VBA代码中,您可以简单地调用frm_Main.Repaint
。
就那么简单!