VBA:如何显示错误消息,就像具有"调试"按钮的标准错误消息一样?

Van*_*mex 22 excel scripting vba ms-office excel-vba

像往常一样,我使用On Error Goto语句创建一个错误处理程序,在那里我放了几行清理代码并显示错误信息,但现在我不想失去默认处理程序的舒适度,它也指向我的确切行发生错误的地方.我怎样才能做到这一点?

提前致谢.

Dr.*_*ius 44

首先是好消息.此代码可以满足您的需求(请注意"行号")

Sub a()
 10:    On Error GoTo ErrorHandler
 20:    DivisionByZero = 1 / 0
 30:    Exit Sub
 ErrorHandler:
 41: If Err.Number <> 0 Then
 42:    Msg = "Error # " & Str(Err.Number) & " was generated by " _
         & Err.Source & Chr(13) & "Error Line: " & Erl & Chr(13) & Err.Description
 43:    MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
 44:    End If
 50:    Resume Next
 60: End Sub
Run Code Online (Sandbox Code Playgroud)

运行时,会显示预期的MsgBox:

替代文字

现在是坏消息:
行号是旧版Basic的残留物.编程环境通常负责插入和更新它们.在VBA和其他"现代"版本中,此功能丢失了.

但是,这里有几种"自动"添加行号的替代方案,为您节省了输入它们的繁琐工作......但所有这些都或多或少看起来很麻烦......或商业化.

HTH!