Excel VBA ByRef y ByVal

buen día, me llamo Miguel y esta vez os traigo un nuevo artículo.

Puede pasar argumentos a un procedimiento (función o sub) por referencia o por valor. Por defecto, Excel VBA pasa argumentos por referencia. Como siempre, usaremos un ejemplo simple para aclarar las cosas.

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

Oscuro X Cómo Entero

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 se deben colocar 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:

Función Triple (Por Ref X Cómo Entero) Cómo Entero

x = x * 3
Triple = x

Aleta Función

Resultado al hacer clic en el botón de comando en la hoja:

Resultado ByRef

Resultado ByRef

3. Reemplace ByRef con ByVal.

Función Triple (PorVal X Cómo Entero) Cómo Entero

x = x * 3
Triple = x

Aleta Función

Resultado al hacer clic en el botón de comando en la hoja:

Resultado ByVal

Resultado de ByVal

Explicación: Al pasar argumentos por referencia, nos referimos al valor original. El valor de x (el valor original) 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 cambia. Como resultado, el segundo MsgBox muestra un valor de 10 (el valor original).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página utiliza Cookies. Más info