我是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
答案 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 ...
行),错误将通过调用堆栈向上传播,直到它遇到错误处理程序。