visual reservadas practicar para palabras ejercicios comandos vba vb6 syntax

vba - reservadas - ¿Qué hace la palabra clave Call en VB6?



palabras reservadas de visual basic pdf (5)

Hay un código en nuestro proyecto que se parece un poco a esto:

Private Sub Method1() Call InnerMethod End Sub Private Sub Method2() InnerMethod End Sub Private Sub InnerMethod() '''' stuff End Sub

¿Cuál es la ventaja de hacer Method1 sobre Method2?


Aquí hay una post que describe cuándo necesita utilizar la llamada vs no usarla y cuándo debe paréntesis alrededor de sus parámetros.

También puede leer más acerca de las call de MSDN. Básicamente, la principal diferencia es que cuando usa la función llamada para llamar a una función, no puede acceder al valor de retorno.


Desde MSDN :

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.

Por ejemplo:

Sub Proc1() Debug.Print "Hello World" End Sub Sub Proc2(text As String) Debug.Print "Hello " & text End Sub

En la ventana inmediata, si ingresas

Proc1

luego se imprime "Hello World". Si ingresas

Call Proc1

luego se imprime "Hello World". Si ingresas

Proc2 "World"

luego se imprime "Hello World". Si ingresas

Call Proc2 "World"

obtienes un error de compilación Deberías ingresar

Call Proc2("World")


He encontrado una diferencia importante sobre la palabra clave ''call'' con funciones que tienen argumentos ByRef (he encontrado esto en el editor de MS-Access VBA). Si llama a la función sin la palabra clave ''Llamada'', los argumentos de ByRef no se establecerán para la calle. Por ejemplo:

Private Function Test(Optional ByRef refArg As String) As Boolean refArg = "Test" Test = True End Function

Si llama a la función sin la palabra clave de Call como

Dim a As String Test(a)

a será una cadena vacía, después de que la llamada regrese

Si llama a la función con la palabra clave de Call como

Dim a As String Call Test(a)

a contendrá la Test cadena

La explicación detallada se proporciona en el siguiente enlace: http://blogs.msdn.com/b/ericlippert/archive/2003/09/15/52996.aspx


La llamada no hace nada especial más que llamar al método. Es un rezago de los viejos tiempos de Basic cuando todas las líneas tenían que comenzar con una palabra clave. "Let" es otra de estas palabras clave, que siempre se puso antes de una tarea, pero ya no es necesaria.

Method1 y Method2 hacen exactamente lo mismo.


No hay diferencia