hola estoy regresando despues de algun tiempo y me surge la siguiente duda cuando o cómo se deben usar al pasar parametros o argumentos a una subrutina o a una funcion.
Que diferencias hay en usar:
'Caso 1
Private Sub Incrementar(valorA As Integer)
valorA = valorA +1
End Sub
'Caso 2
Private Sub Incrementar(ByRef valorA As Integer)
valorA = valorA +1
End Sub
'Caso 3
Private Sub Incrementar(ByVal valorA As Integer)
valorA = valorA +1
End Sub
Por lo que lei... tengo entendido que pasar argumento tipo ByVal crea una copia de la variable original, por lo que cualquier modificación hecha a dicha variable no afectará a la variable original y cuando se usa el argumento tipo ByRef hace una referencia de la variable original, por lo que cualquier modificación hecha a dicha variable si afectará a la variable original.
Y ademas tengo entendido que tanto el caso 1 y el caso 2 son lo mismo ya que en el caso 1 viene implicitamente el ByRef
(Corríjanme si me equivoco)
Mis dudas que me surgen son:
Esto pasa de igual forma en una Funcion que retorne algun valor(Es necesario indicarle el tipo de Argumento)
como ejemplo:
Private Function Incrementar(valorA As Integer) as Integer
valorA = valorA +1
Return valorA
End Function
Private Function Incrementar(ByVal valorA As Integer) as Integer
valorA = valorA +1
Return valorA
End Function
Private Function Incrementar(ByRef valorA As Integer) as Integer
valorA = valorA +1
Return valorA
End Function
Cual es la forma correcta en la que deben escribirse en las Functions?