VBA ByRef - Pass Argument ved hjelp av Excel VBA ByRef-funksjon

Excel VBA ByRef-funksjonsargument

ByRef i VBA er en funksjon kalt som referanse der vi gir en referanse til eventuelle argumenter i koden vår, når vi lager egendefinerte funksjoner og vi vil bruke verdien av en variabel som er definert tidligere før funksjonen vi bruker ByRef-funksjonen, syntaksen å bruke er enkel som Funksjon Funksjon-navn (ByRef Variabel som datatype).

Ved å bruke Byref kan vi peke på den opprinnelige variabelverdien uten å endre variabelverdien. Dette er som å overføre variabelverdien direkte til VBA-underprosedyren eller VBA-funksjonen.

Hvordan overføre argument ved hjelp av VBA ByRef Argument?

Eksempel 1

Se for eksempel på VBA-koden nedenfor.

Kode1:

Underprosedyre1 () Dim k Som heltal k = 50 Prosedyre2 k MsgBox k Slutt Sub

Kode2:

Underprosedyre2 (ByRef k As Integer) k = k + 10 End Sub

I den første prosedyren har jeg erklært variabelen “k” som heltall.

Så har jeg tilordnet verdien til denne variabelen som 50.

Etter det har jeg lagt til en ny linje dvs.

Fremgangsmåte2 k

Dette er det andre prosedyrenavnet. I denne prosedyren har jeg erklært variabelen innen parentes som streng i VBA, men jeg har brukt ordet "ByRef."

ByRef k Som heltal

Her har jeg tilordnet verdien av variabelen “k” som

k = k + 10

Ok, nå vil jeg kjøre koden trinn for trinn ved å trykke på F8-tasten.

Trykk på F8-tasten to ganger til, og plasser en markør på variabelen “k” for å se verdien av variabelen “k”.

Siden vi har tilordnet verdien som 50, viser den verdien som 50. Nå har den markert linjen Prosedyre2 k, som er det andre prosedyrenavnet.

Hvis jeg trykker på F8-tasten nå, hopper den ut av gjeldende prosedyre og går til den andre prosedyren.

Nå som vi har brukt ByRef-ordet, bar det variabelen “k” -verdien fra fremgangsmåten ovenfor.

Trykk to ganger på F8-tasten. Det vil gå tilbake til forrige delprosedyre. Hvis du merker det i den andre prosedyren, har jeg brukt formelen som k = k + 10. dvs. "k" -verdien er 50 og legger deretter 10 til til det vil si, 60 totalt.

Nå kjører koden i den første prosedyren, og i denne prosedyren er variabelen “k” -verdien 50. Men trykk på F8-tasten og se resultatet i en meldingsboks.

Vi fikk resultatet som 60 i stedet for standardverdien 50 i denne prosedyren.

Årsaken til at vi fikk 60 fordi vi i den andre prosedyren har brukt “ByRef”, så den førte ligningsresultatet (k = k + 10) til gjeldende prosedyre.

Her er den første variabelen "k" -verdi 50, og i den andre prosedyren er variabelen "k" -verdien k + 10 dvs. 60, som blir ført til den første prosedyren.

I den første prosedyren var den opprinnelige verdien av variabelen “k” 50, så By Ref har endret den opprinnelige verdien fra 50 til 60 ved å utføre ligningen k = k + 10 dvs. k = 50 +10 = 60.

Eksempel 2

Ta en titt på et eksempel til.

Kode 1:

Sub P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber is changed by the Change_ByRef procedure MsgBox "My Number is now:" & MyNumber End Sub


Kode 2:

Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub

Dette fungerer nøyaktig det samme som forrige kode.

I utgangspunktet er verdien av variabelen “MyNumber” 1. Da kaller vi fremgangsmåten nedenfor ved navn

Ring Change_ByRef (MyNumber)

I den prosedyren er verdien av variabelen 14.

Så når den går tilbake til forrige prosedyre, vil den tilordne den nye verdien til variabelen som 14.

Interessante artikler...