Puede pasar argumentos a un procedimiento (función o sub) por referencia o por valor . De forma predeterminada, Excel VBA pasa argumentos por referencia. Como siempre, usaremos un ejemplo sencillo para aclarar las cosas.
Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:
Dim x As Integer
x = 10
MsgBox Triple(x)
MsgBox x
El código llama a la función Triple. Es el resultado del segundo MsgBox que nos interesa. Las funciones deben colocarse en un módulo.
1. Abra el Editor de Visual Basic y haga clic en Insertar, Módulo.
2. Agregue las siguientes líneas de código:
Function Triple(ByRef x As Integer) As Integer
x = x * 3
Triple = x
End Function
Resultado al hacer clic en el botón de comando en la hoja:
3. Reemplace ByRef con ByVal.
Function Triple(ByVal x As Integer) As Integer
x = x * 3
Triple = x
End Function
Resultado al hacer clic en el botón de comando en la hoja:
Explicación: Al pasar argumentos por referencia, estamos haciendo referencia al valor original. El valor de x (el valor original) se cambia en la función. Como resultado, el segundo MsgBox muestra un valor de 30. Al pasar argumentos por valor, estamos pasando una copia a la función. El valor original no se modifica. Como resultado, el segundo MsgBox muestra un valor de 10 (el valor original).
5/5 Completado! Más información sobre funciones y subs>
Capítulo siguiente: Objeto de aplicación