Excel VBA子系统外部的错误处理
我知道我的标题有点混乱,但这是我的问题。我基本上有一张纸,可以作为各种包装。它能够通过用户表单顺序运行多个宏。基本上,您选中该框,如果选中,它将运行宏。我想做的是,如果有错误,我希望它返回它所在的sub 我的第一个想法是在if语句中,让运行subs的复选框放置一个On Error语句,但这不起作用,因为错误处理会转到被调用的sub,并忽略它前面的内容Excel VBA子系统外部的错误处理,vba,excel,macros,Vba,Excel,Macros,我知道我的标题有点混乱,但这是我的问题。我基本上有一张纸,可以作为各种包装。它能够通过用户表单顺序运行多个宏。基本上,您选中该框,如果选中,它将运行宏。我想做的是,如果有错误,我希望它返回它所在的sub 我的第一个想法是在if语句中,让运行subs的复选框放置一个On Error语句,但这不起作用,因为错误处理会转到被调用的sub,并忽略它前面的内容 我该怎么办?这可能吗 您可以这样做: Sub ErrorHandler() On Error GoTo ErrHandler Call
我该怎么办?这可能吗 您可以这样做:
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
你可以这样做:
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
如果被调用的子进程处理错误,那么您将无能为力。如果被调用的子对象让您看到错误,您可以像处理代码一样处理它。我看不出这里有什么问题。如果被调用的sub处理错误,那么您将无能为力。如果被调用的子对象让您看到错误,您可以像处理代码一样处理它。我看不出这里有什么问题。