vba - una - public sub visual basic
Llamar a un Sub en VBA (2)
Este es mi guión simplificado:
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
La llamada de CatSubProduktAreakum se marca en rojo como un "error de sintaxis". No entiendo el error. Es una llamada sub-rutina simple con dos argumentos. ¿Por qué VBA no acepta la llamada?
Para cualquiera que siga llegando a esta publicación, la otra opción es simplemente omitir los paréntesis:
Sub SomeOtherSub(Stattyp As String)
''Daty and the other variables are defined here
CatSubProduktAreakum Stattyp, Daty + UBound(SubCategories) + 2
End Sub
Las palabras clave de Call
solo están realmente en VBA para compatibilidad hacia atrás y no son realmente necesarias.
Sin embargo, si decides utilizar la palabra clave de Call
, entonces debes cambiar tu sintaxis para que se adapte.
''// With Call
Call Foo(Bar)
''// Without Call
Foo Bar
Ambos harán exactamente lo mismo.
Dicho esto, puede haber instancias en las que el uso de paréntesis innecesariamente haga que las cosas se evalúen donde no se pretendía (como paréntesis hacen esto en VBA) así que con eso en mente la mejor opción es probablemente omita la palabra clave Call
y los paréntesis
Tratar -
Call CatSubProduktAreakum(Stattyp, Daty + UBound(SubCategories) + 2)
En cuanto a la razón, esto de MSDN a través de esta pregunta: ¿Qué hace la palabra clave Call en VB6?
No es necesario que use la palabra clave Call cuando llama a un procedimiento. Sin embargo, si usa la palabra clave de llamada para llamar a un procedimiento que requiere argumentos, la lista de argumentos debe estar entre paréntesis. Si omite la palabra clave de llamada, también debe omitir los paréntesis alrededor de la lista de argumentos. Si utiliza la sintaxis de llamada para llamar a cualquier función intrínseca o definida por el usuario, el valor de retorno de la función se descarta.