一般来说,VB6 和 VBA 使用 DoEvents 来告诉处理器继续处理消息队列中的消息。它在处理器中进行密集处理操作时使用,因此程序的 UI 仍然响应所有其他事件。
示例:您正在执行密集搜索算法,如果您没有添加 DoEvents,程序可能会挂起,直到完成搜索。另一方面,如果您添加 DoEvents(假设是搜索循环),程序不会挂起,并且仍然可以处理所有程序事件,例如(取消)取消搜索。
编辑:我认为 DoEvents 比 Repaint 更全面,因为它处理所有事件类型,不仅处理 UI 的闪烁/挂断。