C'est mon script simplifié:
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
L'appel de CatSubProduktAreakum est marqué en rouge comme "erreur de syntaxe". Je ne comprends pas l'erreur. C'est un simple appel de sous-routine avec deux arguments. Pourquoi VBA n'accepte-t-il pas l'appel?
Essayer -
Call CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)
Quant à la raison, cela provient de MSDN via cette question - Que fait le mot clé Call dans VB6?
Vous n'êtes pas obligé d'utiliser le mot clé Call lorsque vous appelez une procédure. Toutefois, si vous utilisez le mot clé Call pour appeler une procédure nécessitant des arguments, liste d'arguments doit être entre parenthèses. Si vous omettez le mot-clé Call, vous devez également omettre les parenthèses autour de la liste d'arguments. Si vous utilisez l'une des deux syntaxes d'appel pour appeler une fonction intrinsèque ou définie par l'utilisateur, la valeur de retour de la fonction est ignorée.
Pour ceux qui viennent encore sur ce post, l’autre option consiste simplement à omettre les parenthèses:
Sub SomeOtherSub(Stattyp As String)
'Daty and the other variables are defined here
CatSubProduktAreakum Stattyp, Daty + UBound(SubCategories) + 2
End Sub
Les mots-clés Call
n'apparaissent que dans VBA pour la compatibilité avec les versions antérieures et ne sont donc pas obligatoires.
Si Cependant, vous décidez d'utiliser le mot clé Call
, vous devez alors modifier votre syntaxe en conséquence.
'// With Call
Call Foo(Bar)
'// Without Call
Foo Bar
Les deux feront exactement la même chose.
Cela dit, il peut y avoir des cas à surveiller dans lesquels l'utilisation de parenthèses inutilement entraîne l'évaluation de choses que vous ne souhaitiez pas (comme le font les parenthèses dans VBA), de sorte que la meilleure option est probablement de omettez le mot-clé Call
et les parenthèses