为了账号安全,请及时绑定邮箱和手机立即绑定

如何从VBA函数返回结果

如何从VBA函数返回结果

如何从VBA函数返回结果如何从函数返回结果?例如:Public Function test() As Integer     return 1End Function这给出了编译错误。如何让这个函数返回一个整数?
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

VBA函数将函数名称本身视为一种变量。因此return,您只需说:而不是使用“ ”语句,而不是

test = 1

但是请注意,这并没有突破该功能。此语句后的任何代码也将被执行。因此,您可以使用许多赋值语句来分配不同的值test,并且当您到达函数末尾时的值将是返回的值。


查看完整回答
反对 回复 2019-07-30
?
阿晨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


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 7089 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信