Application.ScreenUpdating = True / False之间的延迟以显示更改

时间:2014-07-09 10:16:09

标签: vba excel-vba excel

我有这个问题:我的代码在Application.ScreenUpdating = False中运行,但在某些时刻,我需要向用户显示“进度消息”。

我有这段代码:

Sub CommentUpdate(TextBoxName As Object, CommentMessage As String)
Application.ScreenUpdating = True
TextBoxName.Text = CommentMessage
Application.ScreenUpdating = False
End Sub

但是当它在我的整个程序中运行时,它不起作用。如果我在VBA编辑器中逐步完成(通过F8),它可以工作,我看到了变化。

我怀疑在通用代码中,此指令(在True / False之间切换)太快,屏幕没有时间更新。

在程序中增加1秒的等待时间没有帮助...... 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能有多种原因没有发生这种情况。

  • 检查循环中的事件:如果循环运行得太快,您可能无法注意到更改。为此,您可能希望在循环中运行Application.DoEvents()行。这会减慢速度,但应该更新屏幕。
  • 重绘整个用户窗体:如果您的代码中有与UserForm相关的待处理活动,则表单可能不会更新,直到完成为止。在这种情况下,您可以尝试:UserForm1.Repaint

RePaint方法应刷新内容,包括文本框等,以显示更新的值。