DoEvents 函数

交出执行控制权,以便操作系统能够处理其他事件。

语法

DoEvents ( )

备注

DoEvents 函数返回一个 Integer,它表示独立版本的 Visual Basic(如 Visual Basic Professional Edition)中打开的窗体的数目。 DoEvents 将在所有其他应用程序中返回 0。

DoEvents 将控制权交给操作系统。 控制权将在操作系统处理完其队列中的事件并发送 SendKeys 队列中的所有项后返回。

DoEvents 对于诸如允许用户在过程开始后取消过程(如搜索文件)这样的简单操作最有用。 对于长时间运行的过程,将执行控制权交给处理器要比使用计时器或将任务委派给 ActiveX EXE 组件好得多。 在后一种情况下,任务可以完全独立于应用程序继续,操作系统负责处理多任务和时间切片。

只要将控制权临时交给事件过程中的处理器,就请确保在第一个调用返回之前,不会从代码的其他部分重新执行过程;这可能会导致出现意外结果。 此外,如果其他应用程序可能在你取得控制权期间以不可预见的方式与过程交互,请不要使用 DoEvents

示例

此示例使用 DoEvents 函数来使得每迭代 1000 次循环就将执行权交给操作系统。 DoEvents 返回打开的 Visual Basic 窗体的数目,但此情况仅在主机应用程序为 Visual Basic 时发生。

' Create a variable to hold number of Visual Basic forms loaded 
' and visible.
Dim I, OpenForms
For I = 1 To 150000    ' Start loop.
    If I Mod 1000 = 0 Then     ' If loop has repeated 1000 times.
        OpenForms = DoEvents    ' Yield to operating system.
    End If
Next I    ' Increment loop counter.


另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。