Compartir a través de


Pasar argumentos de forma eficaz

Si no se especifica lo contrario, todos los argumentos se envían a los procedimientos por referencia. Este es un método eficaz si se tiene en cuenta que todos los argumentos que se envían por referencia tardan el mismo tiempo en enviarse y ocupan el mismo espacio (4 bytes) dentro del procedimiento, independientemente del tipo de datos del argumento.

Puede pasar un argumento por valor si incluye la palabra clave ByVal en la declaración del procedimiento. Los argumentos pasados por valor consumen de 2 a 16 bytes dentro del procedimiento, dependiendo del tipo de datos del argumento. Los tipos de datos más grandes tardan un poco más en pasar por valor que los más pequeños. Por este motivo, los tipos de datos String y Variant generalmente no deben pasarse por valor.

Cuando se envía un argumento por valor, se copia la variable original. Los cambios que se realizan al argumento desde el procedimiento no se reflejan en la variable original. Por ejemplo:

Function Factorial (ByVal MyVar As Integer) ' Function declaration. 
 MyVar = MyVar - 1 
 If MyVar = 0 Then 
 Factorial = 1 
 Exit Function 
 End If 
 Factorial = Factorial(MyVar) * (MyVar + 1) 
End Function 
 
' Call Factorial with a variable S. 
S = 5 
Print Factorial(S) ' Displays 120 (the factorial of 5) 
Print S ' Displays 5. 

Si no se incluye ByVal en la declaración de la función, las instrucciones Print anteriores pueden mostrar 1 y 0. Esto se debe MyVar a que, a continuación, haría referencia a la variable S, que se reduce en 1 hasta que es igual a 0.

Dado que ByVal realiza una copia del argumento, permite pasar una variante a la función Factorial . Si el procedimiento que declara el argumento contiene otro tipo de datos, no podrá enviar variantes por referencia.

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.