如何在VBA中出现错误时从函数返回

时间:2010-12-29 11:48:47

标签: vba error-handling return return-value

我是VBA的新手,希望在看到错误时从函数返回。不能这样做。有什么指针吗?

Function GetEditboxValue(control As IRibbonControl, text As String) As String

    If Not IsMissing(text) Then
        If Not IsNumeric(text) Then
            MsgBox "Please enter numeric value only."
            ' I WANT TO RETURN HERE 
        End If
    End If


    If control.id = "xyz" Then
    spaceAboveTable = text
    End If


End Function

4 个答案:

答案 0 :(得分:34)

您需要将EXIT FUNCTION放在那里以进一步执行:

Function GetEditboxValue(control As IRibbonControl, text As String) As String

    If Not IsMissing(text) Then
        If Not IsNumeric(text) Then
            MsgBox "Please enter numeric value only."
            EXIT FUNCTION
        End If
    End If


    If control.id = "xyz" Then
    spaceAboveTable = text
    End If


End Function

答案 1 :(得分:6)

在一般意义上(我实际上并没有说任何已经说过的话):

Function Foo(inputVar As Double) As Double

    On Error GoTo ErrorHandler

    ' Code assigning something to returnValue and defaultOutput

    Foo = returnValue

    Exit Function

    ErrorHandler:

    Foo = defaultOutput

 End Function

当然没理由它必须是Double。

(编辑因为我有第二个"退出功能"而不是"结束功能。")

答案 2 :(得分:1)

您可以在Exit Function声明后使用MsgBox

答案 3 :(得分:0)

另一种选择是使用Err.Raise显式引发错误。由于此函数中没有错误处理程序(即,没有On Error ...行),错误将通过调用堆栈向上传播,直到它遇到错误处理程序。