单击按钮后,我正在运行一行代码来打开PDF。如果文件不存在,我会在上面放一个错误处理程序。问题是代码可以正常工作并且文件已打开,但错误处理程序仍然运行。
当我禁用错误处理代码时,它可以正常运行,并且VB不会生成错误。我什至尝试使用Err.Description
该消息框,它只是弹出而没有显示任何内容。这是我的代码:
Private Sub cmdOpenPDF_Click()
On Error GoTo Errorhandler
Application.FollowHyperlink "E:\groups\folder\folder2\" & Dir("E:\groups\folder\folder2\*" & Me.txtInvNum & "*")
Errorhandler:
MsgBox "Unable to locate the file. I'm sorry this has happened.", vbOKOnly
Exit Sub
End Sub
由于PDF可以正常打开,所以我希望不会有任何错误。令人费解的是,如果没有错误处理程序,则在运行时没有错误。有人知道它为什么这样做吗?
在您的代码中,Errorhandler
仅仅是行标签,该On Error
语句在发生错误时将评估重定向到该标签。
因此,请考虑VBA不能区分用于错误处理程序的行标签,与任何其他GoTo
语句结合使用的任何其他行标签,或根本没有引用的行标签。
在没有错误的情况下,您的代码等效于:
Private Sub cmdOpenPDF_Click()
Application.FollowHyperlink "E:\groups\folder\folder2\" & Dir("E:\groups\folder\folder2\*" & Me.txtInvNum & "*")
Errorhandler:
MsgBox "Unable to locate the file. I'm sorry this has happened.", vbOKOnly
Exit Sub
End Sub
在这里,VBA将尽职地执行该FollowHyperlink
方法,然后执行MsgBox
函数,最后执行Exit Sub
语句。
为了避免每次都对错误处理程序进行评估,错误处理程序的典型实现将在错误处理程序标签之前包含一个附加标签,用于指示干净退出,例如:
Private Sub cmdOpenPDF_Click()
On Error GoTo Errorhandler
Application.FollowHyperlink "E:\groups\folder\folder2\" & Dir("E:\groups\folder\folder2\*" & Me.txtInvNum & "*")
ExitSub:
Exit Sub
Errorhandler:
MsgBox "Unable to locate the file. I'm sorry this has happened.", vbOKOnly
Resume ExitSub
End Sub
这意味着在正常情况下,Exit Sub
将在评估Errorhandler
标签后的代码之前到达该语句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句