Public Function test(ByVal x As Integer) As Integer
If x = 1 Then
test = 1 ' does not exit immediately. You must manually terminate...
Exit Function ' to exit
End If
' Still here? return 0 as default.
test = 0
' no need for an Exit Function because we're about to exit anyway.
End Function
既然如此,那么知道你可以像使用方法中的任何其他变量一样使用return变量也是很好的 . 像这样:
Public Function test(ByVal x As Integer) As Integer
test = x ' <-- set the return value
If test <> 1 Then ' Test the currently set return value
test = 0 ' Reset the return value to a *new* value
End If
End Function
Public Function test(ByVal x As Integer) As Integer
test = x ' <-- set the return value
If test > 0 Then
' RECURSIVE CALL...WITH THE RETURN VALUE AS AN ARGUMENT,
' AND THE RESULT RESETTING THE RETURN VALUE.
test = test(test - 1)
End If
End Function
29
VBA函数将函数名称本身视为一种变量 . 所以不要使用“ return ”语句,而只是说:
test = 1
但请注意,这并没有突破该功能 . 此语句后面的任何代码也将被执行 . 因此,您可以使用许多赋值语句为 test 分配不同的值,并且当您到达函数末尾时的值将是返回的值 .
4 回答
下面的代码将返回值存储到变量
retVal
中,然后MsgBox
可用于显示值:对于非对象返回类型,您必须将值分配给函数的名称,如下所示:
用法示例:
如果函数返回Object类型,则必须使用
Set
关键字,如下所示:用法示例:
请注意,为函数名指定返回值不会终止函数的执行 . 如果要退出该功能,则需要明确说出
Exit Function
. 例如:文档:http://msdn.microsoft.com/en-us/library/office/gg264233%28v=office.14%29.aspx
只是将返回值设置为函数名称仍然与Java(或其他)
return
语句完全不同,因为在java中,return
退出函数,如下所示:在VB中,如果未在函数末尾设置返回值, exact 等效项将占用两行 . 所以,在VB中,确切的推论看起来像这样:
既然如此,那么知道你可以像使用方法中的任何其他变量一样使用return变量也是很好的 . 像这样:
或者,返回变量如何工作的极端例子(但不一定是你应该如何实际编码的一个很好的例子) - 那个会让你夜不能寐的一个例子:
VBA函数将函数名称本身视为一种变量 . 所以不要使用“
return
”语句,而只是说:但请注意,这并没有突破该功能 . 此语句后面的任何代码也将被执行 . 因此,您可以使用许多赋值语句为
test
分配不同的值,并且当您到达函数末尾时的值将是返回的值 .