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

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

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

由于在传递给我定义的Sub的参数周围使用方括号引起的VBA(Access 2003)中的“编译器错误”,我刚刚经历了30分钟。我一直在寻找关于什么时候需要/适当/不适当/禁止使用方括号的体面的文章/教程/说明,但是找不到任何明确的指南。
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

从这里:


使用VBScript调用语句 调用子例程当您希望调用子例程时,可以选择使用Call语句。与Sub一起使用时,Call语句的目的是允许您将参数列表括在括号中。但是,如果子例程未传递任何参数,则在使用Call语句调用Sub时,仍不应使用括号。


Call MySubroutine

如果子例程具有参数,则在使用Call语句时必须使用括号。如果有多个参数,则必须用逗号分隔参数。


Call MySubroutine(intUsageFee, intTimeInHours, "DevGuru") 

调用函数 有两种方法可以调用函数。您可以直接调用该函数(仅按名称),也可以使用VBScript Call语句进行调用。


通过名称 调用函数当直接通过名称调用函数且未分配返回值时,以下所有均为合法语法:


MyFunction

MyFunction()

MyFunction intUsageFee, intTimeInHours, "DevGuru"

如果需要返回值,可以将函数分配给变量。请注意,如果有一个或多个参数,则必须使用括号。


returnval = MyFunction

returnval = MyFunction()

returnval = MyFunction(intUsageFee, intTimeInHours, "DevGuru") 


查看完整回答
反对 回复 2019-11-29
?
蛊毒传说

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

我只是发现了一些奇怪的行为,即在调用带有/不带有括号的函数时。谷歌把我带到这里。


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 '3

end sub


Function p(a as Double) 'default is byref

  a = a + 1

end function

我的结论是,仅使用一个参数调用函数时,您必须使用Call或省略括号,否则该参数不会通过引用传递(正如我已经检查过的那样,它仍然会被调用)。


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1568 浏览

添加回答

举报

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