VBA ByRef - Skicka argument med Excel VBA ByRef-funktion

Innehållsförteckning

Excel VBA ByRef-funktionsargument

ByRef i VBA är en funktion som kallas som referens där vi ger en hänvisning till alla argument i vår kod, när vi gör anpassade funktioner och vi vill använda värdet på alla variabler som definierats tidigare före funktionen vi använder ByRef-funktionen, syntax att använda är enkelt som Function Function-Name (ByRef Variable som Data Type).

Genom att använda Byref kan vi peka på det ursprungliga variabelvärdet utan att ändra variabelvärdet. Detta är som att skicka variabelvärdet direkt till VBA-delproceduren eller VBA-funktionen.

Hur skickas argument med VBA ByRef Argument?

Exempel 1

Titta till exempel på nedanstående VBA-kod.

Kod1:

Underprocedur1 () Dim k Som heltal k = 50 Procedur2 k MsgBox k Avslut Sub

Kod2:

Underförfarande2 (ByRef k som heltal) k = k + 10 Avsluta sub

I det första förfarandet har jag förklarat variabeln “k” som heltal.

Sedan har jag tilldelat värdet till denna variabel som 50.

Efter det har jag lagt till en ny rad, dvs.

Förfarande2 k

Detta är det andra procedurnamnet. I det här förfarandet har jag förklarat variabeln inom parentes som String i VBA, men jag har använt ordet "ByRef."

ByRef k som heltal

Här har jag tilldelat värdet på variabeln "k" som

k = k + 10

Ok, nu kör jag koden steg för steg genom att trycka på F8-tangenten.

Tryck på F8-tangenten två gånger till och placera en markör på variabeln "k" för att se värdet på variabeln "k."

Eftersom vi har tilldelat värdet som 50 visar det värdet som 50. Nu har det markerat raden Procedur2 k, som är det andra procedurnamnet.

Om jag trycker på F8-tangenten nu kommer den att hoppa ur det aktuella förfarandet och gå till den andra proceduren.

Nu eftersom vi har använt ByRef-ordet bar det variabeln "k" -värdet från ovanstående procedur.

Tryck på F8-tangenten två gånger. Det kommer att gå tillbaka till föregående delprocedur. Om du märker det i det andra förfarandet har jag använt formeln som k = k + 10. dvs “k” -värdet är 50 och lägger till ytterligare 10 till det dvs 60 totalt.

Nu körs koden i den första proceduren, och i denna procedur är variabeln “k” -värdet 50. Men tryck på F8-tangenten och se resultatet i en meddelandefält.

Vi fick resultatet som 60 istället för standardvärdet 50 i denna procedur.

Anledningen till att vi fick 60 för att vi i den andra proceduren har tillämpat "ByRef" så att det ledde ekvationsresultatet (k = k + 10) till det aktuella förfarandet.

Här är den första variabeln "k" -värdet 50, och i den andra proceduren är variabeln "k" värdet k + 10, dvs 60, som överförs till den första proceduren.

I den första proceduren var det ursprungliga värdet på variabeln “k” 50, så By Ref har ändrat det ursprungliga värdet från 50 till 60 genom att exekvera k = k + 10, dvs k = 50 +10 = 60.

Exempel 2

Ta nu en titt på ytterligare ett exempel.

Kod 1:

Under P1 () Dim MyNumber Så länge MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber ändras av Change_ByRef-proceduren MsgBox "Mitt nummer är nu:" & MyNumber End Sub


Kod 2:

Sub Change_ByRef (ByRef NewNumber Så länge) NewNumber = 14 End Sub

Detta fungerar exakt samma som den tidigare koden.

Ursprungligen är värdet på variabeln "MyNumber" 1. Sedan kallar vi proceduren nedan med dess namn

Ring Change_ByRef (MyNumber)

I det förfarandet är variabelns värde 14.

Så när det går tillbaka till föregående procedur tilldelas det nya värdet till variabeln som 14.

Intressanta artiklar...