在VBA中调用Sub

时间:2011-10-10 15:23:26

标签: 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 Integer)

    'some stuff

    End Sub

CatSubProduktAreakum的调用标记为红色,表示为“语法错误”。我不明白这个错误。这是一个带有两个参数的简单子例程调用。为什么VBA不接受电话会议?

2 个答案:

答案 0 :(得分:64)

尝试 -

Call CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)

至于原因,这是来自MSDN的这个问题 - What does the Call keyword do in VB6?

  

调用过程时不需要使用Call关键字。   但是,如果使用Call关键字来调用需要的过程   参数,参数列表必须括在括号中。如果省略   Call关键字,你也必须省略括号   参数列表。如果您使用Call语法来调用任何内在函数或   用户定义的函数,函数的返回值被丢弃。

答案 1 :(得分:9)

对于仍然来到这篇文章的人来说,另一种选择是简单地省略括号:

Sub SomeOtherSub(Stattyp As String)
    'Daty and the other variables are defined here

    CatSubProduktAreakum Stattyp, Daty + UBound(SubCategories) + 2

End Sub

Call关键字仅用于VBA以实现向后兼容性,并且实际上并不需要。

如果,您决定使用Call关键字,则必须更改语法以适应。

'// With Call
Call Foo(Bar)

'// Without Call
Foo Bar

两者都会做同样的事情。

话虽如此,可能有一些情况需要注意哪些地方不必要地使用括号会导致评估你不打算做的事情(如同括号在VBA中这样做),所以考虑到这一点更好的选择可能是省略Call关键字和括号