DoEvents 函數

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

注意

如果 Microsoft Jet 運算式服務以沙箱模式執行,則會停用本主題中所述的函數、方法、物件或屬性,這會防止評估可能不安全的運算式。 如需沙箱模式的詳細資訊,請在說明中搜尋「沙箱模式」。

產生執行,以便作業系統可以處理其他事件。

語法

DoEvents ( )

註解

DoEvents 函數會傳回一個整數,代表獨立版本的 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.