Š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žakExcel 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 -
- Vodič za VBA funkciju UBound
- OFFSET Excel funkcija (Primjer, uporabe)
- Stvorite hipervezu u Excelu VBA
- Kako se koristi Excel Fill Handle?