Tras leer este artículo ByVal or ByRef Parameters proporcionado por nuestro amable "BigBoss" Proper, me he puesto a jugar un poco, y se me han puesto los pelos como escarpias.
Ya tenía mas o menos claro la diferencia entre pasar los parámetros como ByRef o pasarlos como ByVal.
Pero lo que no tenía nada claro es que los parámetros son posicionales.
Pero lo mas terrorífico que he descuebierto es que, al ser los parámetros posiciones, los nombres de las variable no se utilizan absolutamente para nada, y por ello si dentro del procedimiento Llamado modificas el valor de uno de los parámetros por ejemplo el nº 3, quedará modificada la variable que pasamos en tercer lugar con independencia del nombre que tenga.
Aquí os dejo un ejemplo de todo este rollazo que os he soltado, y espero que a alguien también le sirva para aclarar algúna cosa.
Sub Llamador()
Pepe = 1
Juan = 2
Llamado Pepe, Juan
Debug.Print Pepe, Juan
End Sub
Sub Llamado(ByRef Juan, ByRef Pepe)
Debug.Print Juan, Pepe
Juan = 3
Pepe = 4
End Sub
[/CODE]
Observad que cuando modificamos el valor de la variable Juan en el procedimiento Llamado, realmente estamos modificando la variable Pepe del procedimiento Llamador.
Saludos.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Hola:
Tras leer este artículo ByVal or ByRef Parameters proporcionado por nuestro amable "BigBoss" Proper, me he puesto a jugar un poco, y se me han puesto los pelos como escarpias.
Ya tenía mas o menos claro la diferencia entre pasar los parámetros como ByRef o pasarlos como ByVal.
Pero lo que no tenía nada claro es que los parámetros son posicionales.
Pero lo mas terrorífico que he descuebierto es que, al ser los parámetros posiciones, los nombres de las variable no se utilizan absolutamente para nada, y por ello si dentro del procedimiento Llamado modificas el valor de uno de los parámetros por ejemplo el nº 3, quedará modificada la variable que pasamos en tercer lugar con independencia del nombre que tenga.
Aquí os dejo un ejemplo de todo este rollazo que os he soltado, y espero que a alguien también le sirva para aclarar algúna cosa.
Observad que cuando modificamos el valor de la variable Juan en el procedimiento Llamado, realmente estamos modificando la variable Pepe del procedimiento Llamador.
Saludos.