web-dev-qa-db-ja.com

VBAでSubを呼び出す

この私の簡単なスクリプト:

    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の呼び出しは、「構文エラー」として赤でマークされています。エラーがわかりません。これは、2つの引数を持つ単純なサブルーチン呼び出しです。 VBAが通話を受け付けないのはなぜですか?

40
reggie

試してください-

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

理由については、MSDNからこの質問を介して VB6でCallキーワードは何をしますか?

プロシージャを呼び出すときに、Callキーワードを使用する必要はありません。ただし、Callキーワードを使用して引数を必要とするプロシージャを呼び出す場合は、argumentlistを括弧で囲む必要があります。 Callキーワードを省略する場合は、argumentlistを囲む括弧も省略する必要があります。呼び出し構文を使用して組み込み関数またはユーザー定義関数を呼び出すと、関数の戻り値は破棄されます。

64
ipr101

まだこの投稿にアクセスしている人にとって、他のオプションは単に括弧を省略することです:

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

    CatSubProduktAreakum Stattyp, Daty + UBound(SubCategories) + 2

End Sub

Callキーワードは、下位互換性のためにVBAにのみ存在し、実際には必要ありません。

Ifただし、Callキーワードを使用することにした場合は、それに合わせて構文を変更する必要があります。

'// With Call
Call Foo(Bar)

'// Without Call
Foo Bar

どちらもまったく同じことを行います。


そうは言っても、括弧を不必要に使用すると、意図しない場所で評価される原因になる場合があることに注意してください(括弧はVBAでこれを行うため)。 Callキーワードと括弧を省略します

9
Sam