Ce este ByRef în VBA?

Byref în VBA înseamnă „By Reference”. Cu ajutorul VBA Byref, putem viza valoarea inițială fără a modifica valoarea stocată în variabile. Cu alte cuvinte, vom trece direct valoarea la Sub proceduri în loc să parcurgem metodele obișnuite de definire și atribuire a valorilor variabilelor.

În VBA ByRef, definim subprocedura după ce am stabilit regula pentru ByRef. Acest lucru ar putea fi realizat sub sub-procedura în care dorim să scriem codul. În ByRef, redefinim variabila folosită în procedura Sub. Și funcționează corect numai atunci când apelăm condiția ByRef în subprocedura noastră.

Cum se utilizează funcția ByRef în Excel VBA?

Mai jos sunt diferite exemple pentru a utiliza funcția ByRef în Excel folosind codul VBA.

Puteți descărca acest șablon VBA ByRef Excel aici - șablonul VBA ByRef Excel

Excel VBA ByRef - Exemplul # 1

În primul rând, să învățăm cum să inserați un ByRef în VBA, pentru aceasta urmați pașii de mai jos. În acest exemplu, vom vedea cum se utilizează VBA ByRef pentru o simplă lucrare de scădere matematică. Pentru aceasta, am avea nevoie de un modul.

Pasul 1: Deci, mergeți la VBA și deschideți un modul din opțiunea Insert meniu, așa cum se arată mai jos.

Pasul 2: În modulul nou deschis, scrieți subcategoria VBA ByRef așa cum se arată mai jos.

Cod:

 Sub VBA_ByRef1 () End Sub 

Pasul 3: Acum definiți o variabilă, să zicem că este o A ca număr întreg.

Cod:

 Sub VBA_ByRef1 () Dim A Ca punct final întreg 

Pasul 4: Dați orice număr variabilei A. Fie că numărul respectiv este de 1000.

Cod:

 Sub VBA_ByRef1 () Dim A Ca număr întreg A = 1000 End sub 

Pasul 5: Pentru a tipări valoarea stocată în variabila A, am folosi Msgbox.

Cod:

 Sub VBA_ByRef1 () Dim A Ca număr întreg A = 1000 MsgBox A Sub End 

Pasul 6: Acum compilăm și rulăm acest cod făcând clic pe butonul Redare, așa cum se arată mai jos. Vom primi o casetă de mesaje cu valoarea stocată în variabila A ca 1000 .

Aplicați acum VBA ByRef, creați o altă subcategorie sub prima și atribuiți variabila definită din prima subcategorie cu ByRef.

Pasul 7: Prin aceasta, vom permite celei de-a doua subcategorii să utilizeze valorile stocate în variabila A.

Cod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) End Sub 

Pasul 8: Acum sună din nou variabila A aici și scade orice valoare din variabila A, pentru a obține valoarea de ieșire în aceeași variabilă. Să scăzem 100 din valoarea variabilei A, astfel încât să obținem un număr măsurabil.

Cod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Pasul 9: Acum, dacă compilăm fiecare pas al codului, vom observa că atunci când cursorul a atins variabila A, vom vedea că are doar 0 stocate în el.

Pasul 10: Când cursorul a ajuns la End Sub, la căsuța de mesaje vom primi 1000.

Pasul 11: Se datorează faptului că nu am atribuit ByRef la prima subcategorie. Acum vom atribui numele subcategoriei înainte de funcția casetei de mesaje a primei subcategorii și vom vedea ce se va întâmpla.

Cod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Pasul 12: Și acum, executați din nou codul complet. Vom vedea, a doua valoare care este stocată în variabila A, deoarece 100 a scăzut de la prima valoare 1000. Ca urmare, am primit mesajul de ieșire ca 900.

Pasul 13: Acesta este principalul avantaj al utilizării ByRef. Nu trebuie să definim mai multe variabile pentru o singură lucrare. O singură variabilă este suficientă pentru a efectua întreaga sarcină în moduri diferite. Putem folosi mai mult de ByRef într-un singur modul.

Pentru a justifica, ceea ce am înțeles, să adăugăm un alt ByRef în același modul.

Cod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) End Sub 

Pasul 14: În această subcategorie, să folosim înmulțirea.

Cod:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) A = A * 2 End Sub 

Pasul 15: Compilați din nou și rulați din nou codul. Vom vedea că valoarea obținută din etapele de mai sus, deoarece 900 este înmulțită acum cu 2 pentru a obține 1800 ca ieșire.

Excel VBA ByRef - Exemplul # 2

În acest exemplu, vom vedea cum funcționează ByRef cu alt tip de numere întregi.

Pasul 1: Deschideți un modul și scrieți subcategoria așa cum se arată mai jos.

Cod:

 Sub VBA_ByRef4 () End Sub 

Pasul 2: Acum definiți o variabilă A ca dublă. Acest lucru ne va permite să folosim valori zecimale.

Cod:

 Sub VBA_ByRef4 () Dim A Ca dublu capăt sub 

Pasul 3: Alocați orice valoare zecimală variabilei A.

Cod:

 Sub VBA_ByRef4 () Dim A Ca dublu A = 1, 23 Sub final 

Pasul 4: Utilizați din nou caseta de mesaje pentru a vedea valoarea stocată în variabila A.

Cod:

 Sub VBA_ByRef4 () Dim A Ca dublu A = 1, 23 MsgBox A Sub End 

Dacă vom rula codul, vom primi 1, 23 ca ieșire.

Pasul 5: În mod diferit, vom folosi funcția pentru a defini ByRef drept dublu cu variabila A.

Cod:

 Sub VBA_ByRef4 () Dim A Ca dublă A = 1, 23 MsgBox A End Sub funcție AddTwo (ByRef A ca dublă) Ca funcție de capăt dublu 

Pasul 6: Acum adăugați orice număr la variabila A. Să zicem că este 10.

Cod:

 Sub VBA_ByRef4 () Dim A Ca dublă A = 1, 23 MsgBox A Funcție finală AddTwo (ByRef A ca dublă) Ca dublă A = A + 10 Funcție finală 

Pasul 7: Și folosiți din nou această funcție ByRef definită în prima subcategorie. Aici vom vedea două căsuțe de mesaje, una pentru variabila A și alta pentru ByRef.

Cod:

 Sub VBA_ByRef4 () Dim A Ca dublă A = 1, 23 MsgBox AddTwo (A) MsgBox A Final Sub Funcție AddTwo (ByRef A ca dublă) Ca dublă A = A + 10 Funcție finală 

Pasul 8: La fel se va reflecta și în caseta de mesaje.

Pasul 9: Și în următoarea execuție, va da valoarea adăugată de 10 în valoarea variabilă inițială de 1, 23, așa cum se arată mai jos.

Acesta este modul în care VBA Byref ia referința la valoarea definită o dată și apoi populează ieșirea conform noii condiții.

Pro și contra VBA ByRef

  • Când scrieți coduri mari, economisiți mult timp luând în considerare variabila deja definită, astfel încât valoarea sa să poată fi folosită din nou și din nou.
  • Nu trebuie să definim multe variabile conform formulei pe care dorim să o aplicăm.
  • Putem aplica multe condiții ByRef într-un singur modul fără a deranja nici măcar procesul.
  • Nu putem folosi VBA Byref în structura de cod complexă.

Lucruri de amintit

  • Când avem în vedere mai multe condiții ByRef, rezultatul se va baza pe ultima procedură ByRef definită de noi, dar ia în considerare și toate condițiile ByRef utilizate anterior.
  • Rezultatul final va avea o ieșire procesată secvențială. Nu numai cea mai recentă.
  • Acest proces nu poate fi realizat prin înregistrarea macro-ului.
  • Putem vedea valoarea stocată în fiecare etapă a variabilei prin compilarea codului.
  • După ce ați terminat, salvați fișierul Excel în format Mac Enabled Excel, astfel încât în ​​viitor nu vom pierde codul.

Articole recomandate

Acesta este un ghid pentru VBA ByRef. Aici vom discuta despre cum să utilizăm funcția ByRef în Excel, folosind codul VBA, împreună cu exemple practice și șablon Excel descărcabil. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Ghid pentru funcția VBA UBound
  2. OFFSET Funcție Excel (exemplu, utilizări)
  3. Creați Hyperlink în Excel VBA
  4. Cum să folosiți mânerul de umplere Excel?

Categorie: