我知道我的头衔有点令人困惑,但这就是我遇到的问题。我基本上有一张表作为各种包装。它能够顺序运行多个宏,这是通过Userform完成的。基本上,你选中复选框,如果选中它,它会运行宏。我想要做的是,如果有错误,我希望它返回它所在的子目录。
我的第一个想法是在我的if语句中运行sub来放置一个On Error语句,但这不起作用,因为错误处理转到被调用的sub并忽略它之前的内容。
我该怎么办?这可能吗?
答案 0 :(得分:6)
你可以这样做:
Sub ErrorHandler()
On Error GoTo ErrHandler
Call Proc1
Call Proc2
Call Proc3
Exit Sub
ErrHandler:
MsgBox Err.Source & vbCrLf & Err.Description
End Sub
Sub Proc1()
On Error GoTo ErrHandler
' Your code block start
' Your code block end
Exit Sub
ErrHandler:
Err.Raise 513, "Proc1", "Customer Error Message 1|" & Err.Description
End Sub
Sub Proc2()
On Error GoTo ErrHandler
' Your code block start
' Your code block end
Exit Sub
ErrHandler:
Err.Raise 513, "Proc2", "Customer Error Message 2|" & Err.Description
End Sub
Sub Proc3()
On Error GoTo ErrHandler
' Your code block start
' Your code block end
Exit Sub
ErrHandler:
Err.Raise 513, "Proc3", "Customer Error Message 3|" & Err.Description
End Sub