Excel VBA ByRef og ByVal
Du kan bestå argumenter til en procedure (funktion eller sub) ved reference eller efter værdi. Som standard, Excel VBA passerer argumenter ved henvisning. Som altid vil vi bruge et let eksempel for at gøre tingene mere klare.
Placer en kommandoknap på dit regneark og tilføj følgende kodelinjer:
x = 10
MsgBox Triple(x)
MsgBox x
Koden kalder funktionen Triple. Det er resultatet af den anden MsgBox, vi er interesserede i. Funktioner skal placeres i et modul.
1. Åbn Visual Basic Editor og klik på Insert, Modul.
2. Tilføj følgende kode linjer:
x = x * 3
Triple = x
End Function
Resultat, når du klikker på kommandoknappen på arket:
3. Udskift ByRef med ByVal.
x = x * 3
Triple = x
End Function
Resultat, når du klikker på kommandoknappen på arket:
Forklaring: Når vi overfører argumenter ved reference, refererer vi den oprindelige værdi. Værdien af x (den oprindelige værdi) ændres i funktionen. Som følge heraf viser den anden MsgBox en værdi på 30. Når vi overfører argumenter efter værdi, sender vi en kopi til funktionen. Den oprindelige værdi ændres ikke. Som et resultat viser den anden MsgBox en værdi på 10 (den oprindelige værdi).