/ / Excel VBA ByRef en ByVal

Excel VBA ByRef en ByVal

U kunt argumenten doorgeven aan een procedure (functie of sub) door verwijzing of op waarde. Standaard, Excel VBA geeft argumenten door verwijzing. Zoals altijd zullen we een eenvoudig voorbeeld gebruiken om de dingen duidelijker te maken.

Plaats een opdrachtknop op uw werkblad en voeg de volgende coderegels toe:

Dim x As Integer
x = 10

MsgBox Triple(x)
MsgBox x

De code roept de functie Triple aan. Het is het resultaat van de tweede MsgBox waarin we geïnteresseerd zijn. Functies moeten in een module worden geplaatst.

1. Open de Visual Basic-editor en klik op Invoegen, Module.

2. Voeg de volgende coderegels toe:

Function Triple(ByRef x As Integer) As Integer

x = x * 3
Triple = x

End Function

Resultaat wanneer u op de opdrachtknop op het blad klikt:

ByRef resultaat

ByRef resultaat

3. Vervang ByRef door ByVal.

Function Triple(ByVal x As Integer) As Integer

x = x * 3
Triple = x

End Function

Resultaat wanneer u op de opdrachtknop op het blad klikt:

ByVal resultaat

ByVal resultaat

Uitleg: Bij het doorgeven van argumenten door verwijzing verwijzen we naar de oorspronkelijke waarde. De waarde van x (de oorspronkelijke waarde) wordt in de functie gewijzigd. Als gevolg hiervan geeft de tweede MsgBox een waarde van 30. Bij het doorgeven van argumenten op waarde geven we een kopie door aan de functie. De oorspronkelijke waarde is niet gewijzigd. Als gevolg hiervan geeft de tweede MsgBox een waarde van 10 (de oorspronkelijke waarde).

Lees ook: