慕碼人2483693
2019-07-30 10:52:39
如何從VBA函數(shù)返回結(jié)果如何從函數(shù)返回結(jié)果?例如:Public Function test() As Integer
return 1End Function這給出了編譯錯(cuò)誤。如何讓這個(gè)函數(shù)返回一個(gè)整數(shù)?
3 回答

米脂
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
VBA函數(shù)將函數(shù)名稱本身視為一種變量。因此return
,您只需說:而不是使用“ ”語句,而不是
test = 1
但是請(qǐng)注意,這并沒有突破該功能。此語句后的任何代碼也將被執(zhí)行。因此,您可以使用許多賦值語句來分配不同的值test
,并且當(dāng)您到達(dá)函數(shù)末尾時(shí)的值將是返回的值。

阿晨1998
TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
只是將返回值設(shè)置為函數(shù)名仍然與Java(或其他)語句不完全相同return
,因?yàn)樵趈ava中,return
退出函數(shù),如下所示:
public int test(int x) { if (x == 1) { return 1; // exits immediately } // still here? return 0 as default. return 0;}
在VB中,如果未在函數(shù)末尾設(shè)置返回值,則精確等效項(xiàng)需要兩行。因此,在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
或者,返回變量如何工作的極端例子(但不一定是你應(yīng)該如何實(shí)際編碼的一個(gè)很好的例子) - 那個(gè)會(huì)讓你夜不能寐的一個(gè)例子:
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
添加回答
舉報(bào)
0/150
提交
取消