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 ...
), ошибка будет распространяться через стек вызовов до тех пор, пока она не запустится в обработчик ошибок.