/ / Excel VBA ByRef og ByVal

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:

Dim x As Integer
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:

Function Triple(ByRef x As Integer) As Integer

x = x * 3
Triple = x

End Function

Resultat, når du klikker på kommandoknappen på arket:

ByRef Resultat

ByRef Resultat

3. Udskift ByRef med ByVal.

Function Triple(ByVal x As Integer) As Integer

x = x * 3
Triple = x

End Function

Resultat, når du klikker på kommandoknappen på arket:

ByVal Resultat

ByVal Resultat

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).

Læs også: