我有一个项目,其中有许多实例
DoCmd.Hourglass -1
<various code>
DoCmd.Hourglass 0
<other code>一旦出现错误,关闭沙漏的线就会被跳过。用户感到困惑,等待应用程序再次准备好。
通常,我会在try..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 但我有信心这是最好的解决方案。
发布于 2022-04-22 17:04:05
看来这个问题在这里得到了回答:
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://stackoverflow.com/questions/71917806
复制相似问题