VBA ByRef - Treceți argumentul folosind funcția Excel VBA ByRef

Argumentul funcției Excel VBA ByRef

ByRef în VBA este o funcție numită ca referință în care oferim o referință la orice argumente din codul nostru, atunci când realizăm funcții personalizate și dorim să folosim valoarea oricărei variabile care este definită mai devreme înainte de funcția pe care o folosim funcția ByRef, sintaxa de utilizat este simplă ca funcție funcție-nume (variabilă ByRef ca tip de date).

Folosind Byref, putem indica valoarea variabilă originală fără a modifica valoarea variabilei. Aceasta este ca și cum ați trece valoarea variabilă direct subprocedurii VBA sau funcției VBA.

Cum să treceți argumentul utilizând argumentul VBA ByRef?

Exemplul nr. 1

De exemplu, uitați-vă la codul VBA de mai jos.

Codul 1:

Sub Procedură1 () Dim k Întreg k = 50 Procedură2 k MsgBox k End Sub

Cod2:

Sub Procedură2 (ByRef k As Integer) k = k + 10 End Sub

În prima procedură, am declarat variabila „k” ca Număr întreg.

Apoi am atribuit valoarea acestei variabile ca 50.

După aceea, am adăugat o nouă linie, adică

Procedura2 k

Acesta este al doilea nume de procedură. În această procedură, am declarat variabila din paranteză ca Șir în VBA, dar am folosit cuvântul „ByRef”.

ByRef k Ca întreg

Aici am atribuit valoarea variabilei „k” ca.

k = k + 10

Ok, acum voi rula codul pas cu pas apăsând tasta F8.

Apăsați tasta F8 de încă două ori și plasați un cursor pe variabila „k” pentru a vedea valoarea variabilei „k”.

Deoarece am atribuit valoarea 50, aceasta arată valoarea 50. Acum a evidențiat linia Procedură2 k, care este al doilea nume de procedură.

Dacă apăs tasta F8 acum, aceasta va sări din procedura curentă și va trece la a doua procedură.

Acum, deoarece am folosit cuvântul ByRef, acesta a purtat variabila „k” din procedura de mai sus.

Apăsați de două ori tasta F8. Se va întoarce la subprocedura anterioară. Dacă observați în a doua procedură, am aplicat formula ca k = k + 10. adică, valoarea „k” este 50, apoi adaugă încă 10 la acea adică, 60 în total.

Acum, codul rulează în prima procedură, iar în această procedură, valoarea variabilă „k” este 50. Dar apăsați tasta F8 și vedeți rezultatul într-o casetă de mesaj.

Am obținut rezultatul ca 60 în loc de valoarea implicită de 50 în această procedură.

Motivul pentru care am obținut 60 deoarece, în cea de-a doua procedură, am aplicat „ByRef“, astfel încât a dus rezultatul ecuației (k = k + 10) la procedura curentă.

Aici prima valoare a variabilei „k” este 50, iar în cea de-a doua procedură valoarea „k” a variabilei este k + 10 adică 60, care este transportată la prima procedură.

În prima procedură, valoarea inițială a variabilei „k” a fost 50, deci By Ref a schimbat valoarea inițială de la 50 la 60 executând ecuația k = k + 10 adică, k = 50 +10 = 60.

Exemplul nr. 2

Acum aruncați o privire la încă un exemplu.

Codul 1:

Sub P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber este modificat prin procedura Change_ByRef MsgBox "Numărul meu este acum:" & MyNumber End Sub


Codul 2:

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

Acest lucru funcționează exact la fel ca și codul anterior.

Inițial, valoarea variabilei „Numărul meu” este 1. Apoi numim procedura de mai jos prin numele ei

Apelați Change_ByRef (MyNumber)

În această procedură, valoarea variabilei este 14.

Deci, când revine la procedura anterioară, va atribui noua valoare variabilei ca 14.

Articole interesante...