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:

ByRef Resultado
ByRef Resultado

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:

Resultado por valor
Resultado por valor

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