在VBA中调用Sub
这是我的简化脚本:在VBA中调用Sub,vba,syntax-error,call,Vba,Syntax Error,Call,这是我的简化脚本: 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
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
CATSUBSUBDUKTAREAKUM的调用被标记为红色的“语法错误”。我不明白这个错误。它是一个带有两个参数的简单子程序调用。为什么VBA不接受呼叫?试试-
Call CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)
至于原因,这是MSDN通过这个问题得出的-
调用过程时不需要使用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
调用
关键字实际上仅在VBA中用于向后兼容性,实际上并不需要
但是,如果您决定使用Call
关键字,则必须更改语法以适应
'// With Call
Call Foo(Bar)
'// Without Call
Foo Bar
两者将做完全相同的事情
也就是说,在某些情况下,可能需要注意不必要地使用括号会导致在您不希望的情况下对内容进行评估(正如VBA中的括号所做的那样),因此记住,更好的选择可能是省略
Call
关键字和括号,谢谢,这似乎是可行的。如果我只使用一个参数调用子例程(并且只使用一个参数定义它),那么我可以只使用它的名称(以及括号中的参数)调用它。为什么不能只调用带有两个参数的Sub?@reggie只要跳过括号Mysub arg1、arg2、arg3
,就可以不调用Sub。但是,您需要阅读ByVal和ByRef。。。。例如,这就是我讨厌VBA的原因。