VBA - Возврат из функции в случае ошибки

Я новичок в 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

Ответы

Ответ 1

Вам нужно поставить 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

Ответ 2

В обобщенном смысле (я на самом деле не говорю ничего, что еще не было сказано):

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

Разумеется, он не должен быть двойным.

(Отредактировано, потому что у меня была вторая "Выходная функция" вместо "End Function".)

Ответ 3

Вы можете использовать Exit Function после вашего оператора MsgBox

Ответ 4

Другим вариантом является явное повышение ошибки с помощью Err.Raise. Поскольку у вас нет обработчика ошибок внутри этой функции (т.е. Строки On Error ...), ошибка будет распространяться через стек вызовов до тех пор, пока она не запустится в обработчик ошибок.