Što je ByRef u VBA?

Byref u VBA znači "Po referenci". Pomoću VBA Byrefa možemo ciljati izvornu vrijednost bez promjene vrijednosti pohranjene u varijablama. Drugim riječima, vrijednost ćemo izravno prosljeđivati ​​Sub postupcima, umjesto da prolazimo kroz uobičajene metode definiranja i dodjeljivanja vrijednosti varijablama.

U VBA ByRef definiramo podproceduru nakon što smo postavili pravilo za ByRef. To se može učiniti ispod potprocedura u kojem želimo napisati kod. U ByRefu redefiniramo varijablu koja se koristi u Sub postupku. A ispravno djeluje samo kad u svom podproceduri zovemo stanje ByRef.

Kako se koristi ByRef funkcija u Excelu VBA?

Ispod su sljedeći primjeri za korištenje ByRef funkcije u Excelu pomoću VBA koda.

Možete preuzeti ovaj VBA ByRef Excel predložak ovdje - VBA ByRef Excel predložak

Excel VBA ByRef - Primjer # 1

Prvo, naučimo kako umetnuti ByRef u VBA, za to slijedite dolje navedene korake. U ovom ćemo primjeru vidjeti kako koristiti VBA ByRef za jednostavan rad matematičkog oduzimanja. Za to bi nam trebao modul.

Korak 1: Dakle, prijeđite na VBA i otvorite modul iz opcije izbornika Umetanje kao što je prikazano u nastavku.

Korak 2: U novootvoreni modul napišite podkategoriju VBA ByRef kao što je prikazano u nastavku.

Kodirati:

 Sub VBA_ByRef1 () Kraj Sub 

Korak 3: Sada definirajte varijablu za koju recimo da je A kao Integer.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjeloviti kraj Pot 

Korak 4: Dajte bilo koji broj varijabli A. Neka taj broj bude 1000.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjelobrojni A = 1000 Krajnji Sub 

Korak 5: Za ispis vrijednosti pohranjene u varijabli A koristili bismo Msgbox.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cijeli broj A = 1000 MsgBox A Kraj Sub 

Korak 6: Sada sastavljamo i pokrećemo ovaj kôd klikom na gumb Reproduciraj kao što je prikazano u nastavku. Dobit ćemo okvir za poruku s vrijednošću pohranjenom u varijabli A kao 1000 .

Sada primijenite VBA ByRef, stvorite drugu potkategoriju ispod prve i dodijelite definiranu varijablu iz prve potkategorije s ByRefom.

Korak 7: Ovime ćemo omogućiti drugoj podkategoriji da koristi vrijednosti pohranjene u varijabli A.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjelobrojni A = 1000 MsgBox A Kraj Sub Sub VBA_ByRef2 (ByRef A kao cjelobrojni) Kraj Sub 

Korak 8: Ovdje ponovo nazovite varijablu A i oduzmite bilo koju vrijednost od varijable A da biste dobili izlaznu vrijednost u istoj varijabli. Oduzmimo 100 od vrijednosti varijable A tako da bismo dobili mjerljiv broj.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjelobrojni A = 1000 MsgBox A Kraj Sub Sub VBA_ByRef2 (ByRef A kao cjelobrojni) A = A - 100 krajnji pot 

Korak 9: Ako sastavimo svaki korak koda, primijetit ćemo da kada je pokazivač dosegao varijablu A, vidjet ćemo da je u njoj pohranjeno samo 0.

Korak 10: Kada je pokazivač stigao do kraja Sub, izlaz ćemo dobiti kao okvir u polju za poruke.

11. korak: zato što ByRef nismo dodijelili prvoj podkategoriji. Sada ćemo dodijeliti ime podkategoriji prije funkcije okvira prve poruke za podkategoriju i vidjeti što će se dogoditi.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjelobrojni A = 1000 VBA_ByRef2 A MsgBox A Kraj Sub Sub VBA_ByRef2 (ByRef A kao cjelobrojni) A = A - 100 krajnji pot 

12. korak: A sada ponovo pokrenite kompletan kod. Vidjet ćemo da je druga vrijednost koja je pohranjena u varijabli A kao 100 oduzeta od prve vrijednosti 1000. Kao rezultat toga, dobili smo izlaznu poruku kao 900.

Korak 13: Ovo je glavna prednost korištenja ByRef-a. Ne moramo definirati više varijabli za jedan posao. Dovoljna je samo jedna varijabla za obavljanje cijelog zadatka na različite načine. U jednom modulu možemo koristiti više ByRef-a.

Da bismo opravdali ono što smo razumjeli dodajmo još jedan ByRef u isti modul.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjelobrojni A = 1000 VBA_ByRef2 A MsgBox A Kraj Sub Sub VBA_ByRef2 (ByRef A kao cjelobrojni) A = A - 100 krajnji Sub Sub VBA_ByRef3 (ByRef A kao cjelobrojni) End Sub 

14. korak: U ovoj podkategoriji koristimo množenje.

Kodirati:

 Sub VBA_ByRef1 () Dim A kao cjelobrojni A = 1000 VBA_ByRef2 A MsgBox A Krajnji Sub Sub VBA_ByRef2 (ByRef A kao cjelobrojni) A = A - 100 krajnji Sub Sub VBA_ByRef3 (ByRef A kao cjelobrojni) A = A * 2 krajnji Sub 

15. korak: Ponovno sastavite i ponovo pokrenite kod. Vidjet ćemo da se vrijednost dobivena iz gornjih koraka kao 900 sada množi sa 2 da bi se dobio 1800 kao izlaz.

Excel VBA ByRef - Primjer # 2

U ovom ćemo primjeru vidjeti kako ByRef djeluje s drugim vrstama cjelobrojnih brojeva.

Korak 1: Otvorite modul i napišite podkategoriju kao što je prikazano u nastavku.

Kodirati:

 Sub VBA_ByRef4 () Kraj Sub 

Korak 2: Sada definirajte varijablu A kao dvostruku. To će nam omogućiti upotrebu decimalnih vrijednosti.

Kodirati:

 Sub VBA_ByRef4 () Dim A kao dvostruki krajnji sub 

Korak 3: Dodijelite bilo koju decimalnu vrijednost varijabli A.

Kodirati:

 Sub VBA_ByRef4 () Dim A kao dvostruki A = 1, 23 Kraj sub 

Korak 4: Sada ponovo upotrijebite okvir za poruku da biste vidjeli vrijednost pohranjenu u varijabli A.

Kodirati:

 Sub VBA_ByRef4 () Dim A kao dvostruki A = 1, 23 MsgBox A Kraj Sub 

Ako pokrenemo kod, dobili bismo 1, 23 kao izlaz.

Korak 5: Na drugačiji način, upotrijebit ćemo funkciju za definiranje ByRef-a kao dvostrukog s varijablama A.

Kodirati:

 Sub VBA_ByRef4 () Dim A kao dvostruki A = 1, 23 MsgBox A Kraj pomoćna funkcija AddTwo (ByRef A kao dvostruka) kao dvostruka funkcija 

Korak 6: Sada dodajte bilo koji broj u varijablu A. Recimo da je 10.

Kodirati:

 Sub VBA_ByRef4 () Dim A kao dvostruki A = 1, 23 MsgBox A krajnja potfunkcija AddTwo (ByRef A kao dvostruka) Kao dvostruka A = A + 10 krajnja funkcija 

Korak 7: I ponovo upotrijebite ovu definiranu ByRef funkciju u prvoj podkategoriji. Ovdje ćemo vidjeti dva okvira s porukama, jedan za varijablu A i drugi za ByRef.

Kodirati:

 Sub VBA_ByRef4 () Dim A kao dvostruki A = 1, 23 MsgBox AddTwo (A) MsgBox A Krajna potfunkcija AddTwo (ByRef A kao dvostruka) Kao dvostruka A = A + 10 krajnja funkcija 

Korak 8: Isto bi se odrazilo i na okviru s porukama.

Korak 9: I u sljedećem pokretu dat će dodanu vrijednost 10 u izvornu vrijednost varijable 1, 23 kao što je prikazano u nastavku.

Ovako VBA Byref uzima referentnu vrijednost definirane jednom, a zatim popunjava izlaz prema novom stanju.

Za i protiv VBA ByRef

  • Kada pišete velike kodove, štedi se puno vremena uzimajući u obzir već definiranu varijablu, tako da se njezina vrijednost može koristiti iznova i iznova.
  • Ne moramo definirati mnoge varijable prema formuli koju želimo primijeniti.
  • U jednom modulu možemo primijeniti mnoge ByRef uvjete, a da pritom ne narušimo proces.
  • Ne možemo koristiti VBA Byref u složenoj strukturi koda.

Stvari koje treba zapamtiti

  • Kada se razmatra više od jednog ByRef uvjeta, izlaz će se temeljiti na posljednjem podprocedu ByRef koji smo definirali, ali također uzima u obzir sve prethodno korištene ByRef uvjete.
  • Konačni izlaz imat će uzastopno obrađeni izlaz. Ne samo najnoviji.
  • Ovaj se proces ne može provesti snimanjem makronaredbe.
  • Vrijednost pohranjenu u svakoj fazi varijable možemo vidjeti kompiliranjem koda.
  • Nakon što spremite, spremite datoteku excela kao format excel Macro Enabled, kako ne bismo u budućnosti izgubili kod.

Preporučeni članci

Ovo je vodič za VBA ByRef. Ovdje smo raspravljali o tome kako koristiti ByRef funkciju u Excelu koristeći VBA kod uz praktične primjere i preuzeti Excel predložak. Možete pogledati i sljedeće članke da biste saznali više -

  1. Vodič za VBA funkciju UBound
  2. OFFSET Excel funkcija (Primjer, uporabe)
  3. Stvorite hipervezu u Excelu VBA
  4. Kako se koristi Excel Fill Handle?

Kategorija: