在VBA函数调用中,括号的使用规则是什么?

由于在传递给我定义的Sub的参数周围使用方括号引起的VBA(Access 2003)中的“编译器错误”,我刚刚经历了30分钟。

我一直在寻找关于什么时候需要/适当/不适当/禁止使用方括号的体面的文章/教程/说明,但是找不到任何明确的指南。


偶然的你
浏览 1723回答 3
3回答

www说

从这里:使用VBScript调用语句 调用子例程当您希望调用子例程时,可以选择使用Call语句。与Sub一起使用时,Call语句的目的是允许您将参数列表括在括号中。但是,如果子例程未传递任何参数,则在使用Call语句调用Sub时,仍不应使用括号。Call MySubroutine如果子例程具有参数,则在使用Call语句时必须使用括号。如果有多个参数,则必须用逗号分隔参数。Call MySubroutine(intUsageFee, intTimeInHours, "DevGuru") 调用函数 有两种方法可以调用函数。您可以直接调用该函数(仅按名称),也可以使用VBScript Call语句进行调用。通过名称 调用函数当直接通过名称调用函数且未分配返回值时,以下所有均为合法语法:MyFunctionMyFunction()MyFunction intUsageFee, intTimeInHours, "DevGuru"如果需要返回值,可以将函数分配给变量。请注意,如果有一个或多个参数,则必须使用括号。returnval = MyFunctionreturnval = MyFunction()returnval = MyFunction(intUsageFee, intTimeInHours, "DevGuru") 

蛊毒传说

我只是发现了一些奇怪的行为,即在调用带有/不带有括号的函数时。谷歌把我带到这里。sub test()  dim a as double  a = 1#  p(a) 'this won't change a's value  Debug.Print a '1  p a  ' this is expected behavior  Debug.Print a '2  Call p(a) 'this is also valid  Debug.Print a '3end subFunction p(a as Double) 'default is byref  a = a + 1end function我的结论是,仅使用一个参数调用函数时,您必须使用Call或省略括号,否则该参数不会通过引用传递(正如我已经检查过的那样,它仍然会被调用)。
打开App,查看更多内容
随时随地看视频慕课网APP