猿问

如何从VBA函数返回结果

如何从VBA函数返回结果

如何从函数返回结果?

例如:

Public Function test() As Integer
    return 1End Function

这给出了编译错误。

如何让这个函数返回一个整数?


慕码人2483693
浏览 7091回答 3
3回答

米脂

VBA函数将函数名称本身视为一种变量。因此return,您只需说:而不是使用“ ”语句,而不是test = 1但是请注意,这并没有突破该功能。此语句后的任何代码也将被执行。因此,您可以使用许多赋值语句来分配不同的值test,并且当您到达函数末尾时的值将是返回的值。

阿晨1998

只是将返回值设置为函数名仍然与Java(或其他)语句不完全相同return,因为在java中,return退出函数,如下所示:public&nbsp;int&nbsp;test(int&nbsp;x)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(x&nbsp;==&nbsp;1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;//&nbsp;exits&nbsp;immediately &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;still&nbsp;here?&nbsp;return&nbsp;0&nbsp;as&nbsp;default. &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}在VB中,如果未在函数末尾设置返回值,则精确等效项需要两行。因此,在VB中,确切的推论看起来像这样:Public&nbsp;Function&nbsp;test(ByVal&nbsp;x&nbsp;As&nbsp;Integer)&nbsp;As&nbsp;Integer &nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;x&nbsp;=&nbsp;1&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;1&nbsp;'&nbsp;does&nbsp;not&nbsp;exit&nbsp;immediately.&nbsp;You&nbsp;must&nbsp;manually&nbsp;terminate... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit&nbsp;Function&nbsp;'&nbsp;to&nbsp;exit &nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If &nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;Still&nbsp;here?&nbsp;return&nbsp;0&nbsp;as&nbsp;default. &nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;no&nbsp;need&nbsp;for&nbsp;an&nbsp;Exit&nbsp;Function&nbsp;because&nbsp;we're&nbsp;about&nbsp;to&nbsp;exit&nbsp;anyway.End&nbsp;Function既然如此,那么知道你可以像使用方法中的任何其他变量一样使用return变量也是很好的。像这样:Public&nbsp;Function&nbsp;test(ByVal&nbsp;x&nbsp;As&nbsp;Integer)&nbsp;As&nbsp;Integer &nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;x&nbsp;'&nbsp;<--&nbsp;set&nbsp;the&nbsp;return&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;test&nbsp;<>&nbsp;1&nbsp;Then&nbsp;'&nbsp;Test&nbsp;the&nbsp;currently&nbsp;set&nbsp;return&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;0&nbsp;'&nbsp;Reset&nbsp;the&nbsp;return&nbsp;value&nbsp;to&nbsp;a&nbsp;*new*&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;IfEnd&nbsp;Function或者,返回变量如何工作的极端例子(但不一定是你应该如何实际编码的一个很好的例子) - 那个会让你夜不能寐的一个例子:Public&nbsp;Function&nbsp;test(ByVal&nbsp;x&nbsp;As&nbsp;Integer)&nbsp;As&nbsp;Integer &nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;x&nbsp;'&nbsp;<--&nbsp;set&nbsp;the&nbsp;return&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;test&nbsp;>&nbsp;0&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;RECURSIVE&nbsp;CALL...WITH&nbsp;THE&nbsp;RETURN&nbsp;VALUE&nbsp;AS&nbsp;AN&nbsp;ARGUMENT, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;AND&nbsp;THE&nbsp;RESULT&nbsp;RESETTING&nbsp;THE&nbsp;RETURN&nbsp;VALUE. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;test(test&nbsp;-&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;IfEnd&nbsp;Function
随时随地看视频慕课网APP
我要回答