VBA ByRef - Prenos argumenta z uporabo funkcije Excel VBA ByRef

Argument funkcije Excel VBA ByRef

ByRef v VBA je funkcija, ki se imenuje kot referenca, pri čemer se sklicujemo na katere koli argumente v naši kodi, ko delamo funkcije po meri in želimo uporabiti vrednost katere koli spremenljivke, ki je definirana prej, preden funkcija, ki jo uporabljamo funkcija ByRef, sintaksa, ki jo je treba uporabiti, je preprosta kot Funkcija-Function-Name (spremenljivka ByRef kot podatkovni tip).

Z uporabo Byrefa lahko pokažemo na prvotno vrednost spremenljivke, ne da bi spremenili vrednost spremenljivke. To je kot posredovanje vrednosti spremenljivke neposredno v podproceduro VBA ali funkcijo VBA.

Kako prenesti argument z uporabo argumenta VBA ByRef?

Primer # 1

Na primer, poglejte spodnjo kodo VBA.

Koda1:

Sub Procedure1 () Dim k As Integer k = 50 Postopek2 k MsgBox k End Sub

Koda2:

Sub Postopek2 (ByRef k Kot celo število) k = k + 10 Končaj Sub

V prvem postopku sem spremenljivko "k" razglasil za celo število.

Nato sem tej spremenljivki dodelil vrednost 50.

Po tem sem dodal novo vrstico, tj

Postopek2 k

To je drugo ime postopka. V tem postopku sem spremenljivko v oklepaju v VBA razglasil za niz, vendar sem uporabil besedo »ByRef«.

ByRef k Kot celo število

Tu sem vrednost spremenljivke "k" dodelil kot

k = k + 10

Ok, zdaj bom zagnal kodo korak za korakom s pritiskom na tipko F8.

Še dvakrat pritisnite tipko F8 in postavite kazalko na spremenljivko "k", da vidite vrednost spremenljivke "k".

Ker smo dodelili vrednost 50, prikazuje vrednost 50. Zdaj je poudarila vrstico Procedure2 k, kar je drugo ime postopka.

Če zdaj pritisnem tipko F8, ta izstopi iz trenutnega postopka in preide na drugi postopek.

Ker smo uporabili besedo ByRef, je iz zgornjega postopka prenesla vrednost spremenljivke "k".

Dvakrat pritisnite tipko F8. Vrnil se bo v prejšnji podproces. Če opazite v drugem postopku, sem formulo uporabil kot k = k + 10. tj. Vrednost "k" je 50, nato pa k tej doda skupaj še 10, to je skupaj 60.

Zdaj se koda izvaja v prvem postopku in v tem postopku je vrednost spremenljivke "k" 50. Toda pritisnite tipko F8 in v oknu za sporočilo si oglejte rezultat.

Rezultat smo dobili kot 60 namesto privzete vrednosti 50 v tem postopku.

Razlog, zakaj smo dobili 60, ker smo v drugem postopku uporabili "ByRef", tako da je rezultat trenutne enačbe (k = k + 10) prenesel na trenutni postopek.

Tu je prva spremenljivka "k" vrednost 50, v drugem postopku pa je vrednost spremenljivke "k" k + 10, tj. 60, ki se prenese v prvi postopek.

V prvem postopku je bila izvirna vrednost spremenljivke "k" 50, zato je By Ref spremenil prvotno vrednost s 50 na 60 z izvedbo enačbe k = k + 10, tj. K = 50 +10 = 60.

2. primer

Zdaj pa si oglejte še en primer.

Koda 1:

Sub P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber se spremeni po postopku Change_ByRef MsgBox "Moja številka je zdaj:" & MyNumber End Sub


Koda 2:

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

To deluje popolnoma enako kot prejšnja koda.

Sprva je vrednost spremenljivke »MyNumber« enaka 1. Potem pokličemo spodnji postopek z imenom

Call Change_ByRef (MyNumber)

V tem postopku je vrednost spremenljivke 14.

Ko se vrne na prejšnji postopek, bo spremenljivki dodelil novo vrednost kot 14.

Zanimive Članki...