** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Diferencia entre Byval y ByRef
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoDiferencia entre Byval y ByRef

 Responder Responder
Autor
Mensaje
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11317
Enlace directo a este mensaje Tema: Diferencia entre Byval y ByRef
    Enviado: 10/Agosto/2013 a las 08:10
Alguna vez hemos visto eso de pasar parametros a un procedimiento y/o funcion anteponiendo ByVal y ByRef...pero../Que es eso realmente?
Pruebalo tu mismo:

Public Sub Mi_Nombre1(ByRef strNombre As String)
'Byref: Modo de pasar un argumento a un procedimiento pasando
'su dirección en vez de su valor.
'Esto hace posible el ACCESO del procedimiento a la variable real.
'Como resultado, el valor real de la variable puede ser cambiado
'por el procedimiento al cual se pasa. (Caso de este ejemplo)
'Ojo pues que este es el modo PREDETERMINADO en VBA.
'Si yo en este procedimiento quito el prefijo ByRef el reultado sería el mismo:
'Es decir, me cambiaría el valor de la variable y esto podría ocasionarme
'problemas en el procedimiento Prueba1, donde la variable
'Minombre ya no tendría el valor Buho, sino Rafael
    strNombre = "Rafael"
    MsgBox strNombre
End Sub
Public Sub Mi_Nombre2(ByVal strNombre As String)
' Byval: Modo de pasar un argumento a un procedimiento pasando
' su valor en vez de su dirección.
' Esto hace posible el acceso del procedimiento a UNA COPIA de la variable.
' Como resultado, el valor actual de la variable no puede ser cambiado por
' el procedimiento al cual se pasa.
'En el caso de este ejemplo, la variable Minombre de Prueba2, al volver
'a él, seguirá valiendo Buho, no Rafael
    strNombre = "Rafael"
    MsgBox strNombre
End Sub
Sub prueba1()
'modifica la variable
    Dim Minombre As String
    Minombre = "Buho"
    Mi_Nombre1 Minombre
    MsgBox Minombre
End Sub
Sub Prueba2()
'no modifica la variable
    Dim Minombre As String
    Minombre = "Buho"
    Mi_Nombre2 Minombre
    MsgBox Minombre
End Sub


Editado por buho - 17/Agosto/2013 a las 09:18
Expulsado de la cárcel por robar los barrotes
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable