如何从VBA函数返回结果如何从函数返回结果?例如:Public Function test() As Integer
return 1End Function这给出了编译错误。如何让这个函数返回一个整数?
3 回答
米脂
TA贡献1836条经验 获得超3个赞
VBA函数将函数名称本身视为一种变量。因此return
,您只需说:而不是使用“ ”语句,而不是
test = 1
但是请注意,这并没有突破该功能。此语句后的任何代码也将被执行。因此,您可以使用许多赋值语句来分配不同的值test
,并且当您到达函数末尾时的值将是返回的值。
阿晨1998
TA贡献2037条经验 获得超6个赞
只是将返回值设置为函数名仍然与Java(或其他)语句不完全相同return
,因为在java中,return
退出函数,如下所示:
public int test(int x) { if (x == 1) { return 1; // exits immediately } // still here? return 0 as default. return 0;}
在VB中,如果未在函数末尾设置返回值,则精确等效项需要两行。因此,在VB中,确切的推论看起来像这样:
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 IfEnd 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 IfEnd Function
添加回答
举报
0/150
提交
取消