我有一個包含多個實體的專案
DoCmd.Hourglass -1
<various code>
DoCmd.Hourglass 0
<other code>
任何時候出現錯誤,都會跳過關閉沙漏的行。用戶感到困惑并等待應用程式再次準備好。
通常,我會嘗試處理這個..finally
try {
DoCmd.Hourglass -1
<various code>
} finally {
DoCmd.Hourglass 0
}
但這不是 VBA 中的選項。
我認為搜索并找到正確的方法是一件簡單的事情,但我找到的每個樣本都采用了上述幼稚的方法。
訣竅是我不想影響任何現有的程式流程,這意味著我需要重新拋出錯誤。
當然,“投擲”也不存在。
但這也意味著我不需要從發生錯誤的地方恢復。
這是我目前最好的猜測
On Error GoTo ErrHandler
DoCmd.Hourglass -1
<various code>
DoCmd.Hourglass 0
<other code>
Exit Function
ErrHandler:
DoCmd.Hourglass 0
Err.Raise Err.Number
End Function
但我對這是最佳解決方案的信心為 0。
uj5u.com熱心網友回復:
看起來問題在這里得到了回答:
https ://stackoverflow.com/a/64478691/1513027
err.raise Err.Number
This is the correct method, and no, you don't have to re-state all the err properties. The values are retained.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468365.html
上一篇:如果為空,如何回傳0
下一篇:檢查陣列是否使用遞回排序
