¿Te atreves a demostrar lo que sabes resolviendo alguno de estos
temas abiertos/no resueltos?

ByRef o ByVal
 
Compartir:
Avisos
Vaciar todo

[Resuelto] ByRef o ByVal  

  RSS
Pangolin
(@pangolin)
Nuevo miembro Registered

Buenas noches,

No llevo mucho con el tema de macros en VBA y una cosa que no he terminado de entender es la diferencia entre ByRef y ByVal cuando se pasan variables a una Sub.

Si alguien me lo pudiera aclarar de forma sencilla, me serviría de gran ayuda.

Gracias de antemano

Respondido : 13/09/2020 10:35 pm
RET
 RET
(@ret)
Miembro Admin

Hola @pangolin,

 

Intento explicarte de forma sencilla.

Cuando se declara una variable, lo que hace VBA es reservar un espacio en memoria para almacenar el valor de dicha variable. Si no hay una declaración explícita, VBA de forma automática, asigna un tipo Variant y reserva dicho espacio.

Cuando asignas un valor a la variable, se guarda en esa posición de memoria. Cuando modificas dicha variable, se sobre escribe dicha posición de memoria. En resumen, VBA sabe a que posición de memoria debe ir a leer o escribir el valor de la variable.

Cuando pasas una variable desde un procedimiento a otro, puedes pasar:

- ByVal: transfieres el valor que en ese momento tiene la variable y la Sub o Function que la recibe, crea una nueva variable a la que asigna, en este proceso de creación, una nueva posición de memoria. Si esta variable pasada es modificada en la Sub o Function que la recibe, se modifica esta copia. Al finalizar esta Sub/Function, este valor se pierde y la rutina original seguirá trabajando con la variable ubicada en la posición de memoria original, que tendrá el mismo valor que tenía en el momento de llamar a la Sub/Funtion

- ByRef: en este caso, se transfiere la referencia a la posición de memoria que almacena la variable. Si se modifica ese valor en la Sub/Function llamada, se cambia el valor de la variable original. Al retornar a la Sub desde donde se ha llamado, el valor estará modificado al que se haya asignado en la Sub/Function llamada.

Espero haberte aclarado tus dudas.

 

IMF_RET

https://InformaticaMuyFacil.com

Respondido : 14/09/2020 9:31 am
Pangolin le gustó
Pangolin
(@pangolin)
Nuevo miembro Registered

Muchas gracias por la explicación. Me ha quedado súper claro.

Así da gusto!

Respondido : 14/09/2020 9:47 pm

Dejar una respuesta

Nombre del autor

Correo electrónico del autor

Título *

 
Vista previa 0 revisiones Guardado