ByVal

Hola Mauricio, sólo una pregunta, que es lo que hace ByVal, cuando se define una función, ejemplo
Fuction xxx(Byval abc as integer)

1 Respuesta

Respuesta
1
ByVal hace que al argumento pasado se le pase una copia de la variable, por lo tanto en la función no es posible modificar el valor de dicha variable, vamos a demostrarlo, prueba el siguiente código
Option Explicit
Public Sub PasarValores()
Dim intNum As Integer
intNum = 2
MsgBox Format(intNum) & " = " & XXX_1(intNum)
MsgBox "intNum = " & Format(intNum) 'Aqui todavia vale 2
MsgBox Format(intNum) & " = " & XXX_2(intNum)
MsgBox "intNum = " & Format(intNum) 'Aqui ahora vale 3
End Sub
Public Function XXX_1(ByVal abc As Integer) As String
Dim str As String
Select Case abc
Case 1: str = "Uno"
Case 2: str = "Dos"
Case 3: str = "Tres"
Case 4: str = "Cuatro"
Case 5: str = "Cinco"
Case Else: str = "Otro"
End Select
'Aquí modificamos el valor de la variable pasado
'intNum solo que como con ByVal le pasamos una copia
'la copia es la que se modifica
abc = abc + 1
XXX_1 = str
End Function
Public Function XXX_2(ByRef abc As Integer) As String
Dim str As String
Select Case abc
Case 1: str = "Uno"
Case 2: str = "Dos"
Case 3: str = "Tres"
Case 4: str = "Cuatro"
Case 5: str = "Cinco"
Case Else: str = "Otro"
End Select
'Aquí modificamos el valor de la variable pasada
'intNum pero la pasamos por referencia ByRef la variable
'original es la que se modifica
abc = abc + 1
XXX_2 = str
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas