vba:将变量传递给错误句柄

时间:2010-11-19 17:09:51

标签: vba

我有一个声明:

on error go to label

但是我想将导致错误的变量传递给标签

这可能吗?

4 个答案:

答案 0 :(得分:4)

您可以使用Err来获取错误号和描述

 Sub|Function SomeName()
     On Error GoTo Err_SomeName          ' Initialize error handling.
     ' Code to do something here.
 Exit_SomeName:                          ' Label to resume after error.
     Exit Sub|Function                   ' Exit before error handler.
 Err_SomeName:                           ' Label to jump to on error.
     MsgBox Err.Number & Err.Description ' Place error handling here.
     Resume Exit_SomeName                ' Pick up again and quit.
 End Sub|Function

答案 1 :(得分:3)

首先,我认为你的意思是:

on error goto label

不,你不能使用goto命令传递变量。但是,您可以查看Err.Description了解详细信息,如果您提出自己的错误,可以执行以下操作:

  ' Raise a custom error.
    Err.Raise Number:=vbObjectError + 1000, _
        Source:="TestRaiseCustomError", _
        Description:="My custom error description."

因此,如果您提出自己的错误,可以将Source设置为导致问题的字段。

有关详细信息,请参阅this link上的使用Err对象的提升方法提高自定义错误部分。

答案 2 :(得分:0)

我想不出一个聪明的方法。我通常有一个错误handeling类/函数,我可以使用“on error goto”将错误传递给底部块然后调用错误handeling函数。这样做的好处是有一个集中的错误处理程序很好,但你也可以自定义它,所以在我的情况下,我传递崩溃的过程的名称。它并不漂亮,但如果你真的想要传递一组变量(取决于你有多少)或者设置一些东西来根据行号来识别变量(你必须加上它...) )

on error goto err

'Code

err:

ErrorHandeler err, "String with Procedure name"

答案 3 :(得分:0)

声明全局变量并在代码和错误代码中使用它们。

Public global_variable1 As Integer
Public global_variable2 As String

Private Sub Btn1234_Click()
....
end sub

Err_abcd:                           
....
End Sub