注意: 如果 Microsoft Jet 表达式服务在沙盒模式下运行,则禁用本主题中所述的函数、方法、对象或属性,这会阻止计算潜在的不安全表达式。 有关沙盒模式的详细信息,请在“帮助”中搜索“沙盒模式”。
生成执行,以便操作系统可以处理其他事件。
语法
DoEvents ( )
备注
DoEvents 函数返回一个 Integer 类型的值,表示独立版本的 Microsoft Visual Basic(如 Visual Basic、Professional Edition)中打开的窗体数。 DoEvents 在所有其他应用程序中返回零。
DoEvents 将控制传递给操作系统。 操作系统处理完其队列中的事件并发送 SendKeys 队列中的所有密钥后,将返回控件。
DoEvents 对于允许用户在进程启动后取消进程(例如搜索文件)等简单操作最有用。 对于长时间运行的进程,通过使用计时器或将任务委托给 ActiveX EXE 组件,可以更好地向处理器屈服。 在后一种情况下,任务可以完全独立于应用程序继续,操作系统负责处理多任务和时间切片。
每当在事件过程中暂时向处理器屈服时,请确保在第一次调用返回之前,不会从代码的其他部分再次执行 过程;这可能会导致不可预知的结果。 此外,如果其他应用程序可能在你产生控制权期间以不可预见的方式与过程交互,请不要使用 DoEvents 。
示例
注意: 下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。
此示例使用 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.