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

Ash*_*pta 19 error-handling vba 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
Run Code Online (Sandbox Code Playgroud)

Sar*_*raz 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
Run Code Online (Sandbox Code Playgroud)

  • 如果它是子程序而不是函数,则退出SUB. (2认同)

小智 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
Run Code Online (Sandbox Code Playgroud)

当然,没理由它必须是Double.

(编辑是因为我有第二个"退出函数"而不是"结束函数".)