reg*_*gie 40 vba call syntax-error
这是我的简化脚本:
Sub SomeOtherSub(Stattyp As String)
'Daty and the other variables are defined here
CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)
End Sub
Sub CatSubProduktAreakum(Stattyp As String, starty As Integer)
'some stuff
End Sub
Run Code Online (Sandbox Code Playgroud)
CatSubProduktAreakum的调用标记为红色,表示为"语法错误".我不明白这个错误.这是一个带有两个参数的简单子例程调用.为什么VBA不接受电话?
ipr*_*101 65
试试 -
Call CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)
Run Code Online (Sandbox Code Playgroud)
至于原因,这来自MSDN通过这个问题 - Call关键字在VB6中做了什么?
调用过程时,不需要使用Call关键字.但是,如果使用Call关键字调用需要参数的过程,则必须将参数列表括在括号中.如果省略Call关键字,则还必须省略argumentlist周围的括号.如果使用Call语法调用任何内部函数或用户定义函数,则会丢弃函数的返回值.
对于仍然来到这篇文章的人,另一种选择是简单地省略括号:
Sub SomeOtherSub(Stattyp As String)
'Daty and the other variables are defined here
CatSubProduktAreakum Stattyp, Daty + UBound(SubCategories) + 2
End Sub
Run Code Online (Sandbox Code Playgroud)
该Call关键字仅在VBA真正的向后兼容性和实际上是不需要的.
但是,如果您决定使用Call关键字,则必须更改语法以适应.
'// With Call
Call Foo(Bar)
'// Without Call
Foo Bar
Run Code Online (Sandbox Code Playgroud)
两者都会做同样的事情.
话虽这么说,可能有一些情况要注意哪些地方不必要地使用括号会导致你不想要的东西被评估(正如在VBA中这样括号)所以考虑到这一点,更好的选择可能是省略Call关键字和括号