Čo je ByRef vo VBA?
Byref vo VBA znamená „By Reference“. Pomocou VBA Byref môžeme zacieľovať na pôvodnú hodnotu bez zmeny hodnoty uloženej v premenných. Inými slovami, priamo odovzdáme hodnotu procedúram Sub, namiesto toho, aby sme prešli bežnými metódami definovania a priradenia hodnôt premenným.
Vo VBA ByRef definujeme podprogram po nastavení pravidla pre ByRef. Toto by sa dalo urobiť pod čiastkovým postupom, kde chceme napísať kód. V ByRef redefinujeme premennú, ktorá sa používa v procedúre Sub. A funguje to správne iba vtedy, keď v našom podprograme nazývame stav ByRef.
Ako používať funkciu ByRef v programe Excel VBA?
Nižšie sú uvedené rôzne príklady použitia funkcie ByRef v programe Excel pomocou kódu VBA.
Túto šablónu VBA ByRef Excel si môžete stiahnuť tu - šablónu VBA ByRef ExcelExcel VBA ByRef - Príklad č. 1
Najprv sa naučme, ako vložiť ByRef do VBA, preto postupujte podľa nasledujúcich krokov. V tomto príklade uvidíme, ako používať VBA ByRef na jednoduché matematické odčítanie. Na to by sme potrebovali modul.
Krok 1: Takže choďte na VBA a otvorte modul z ponuky Vložiť možnosť, ako je uvedené nižšie.
Krok 2: Do novo otvoreného modulu napíšte podkategóriu VBA ByRef, ako je to znázornené nižšie.
kód:
Sub VBA_ByRef1 () End Sub
Krok 3: Teraz definujte premennú, povedzme, že je A ako celé číslo.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo Sub Sub
Krok 4: Priraďte ľubovoľné číslo premennej A. Nech je toto číslo 1 000.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo A = 1000 End Sub
Krok 5: Na tlač hodnoty uloženej v premennej A by sme použili Msgbox.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo A = 1000 MsgBox A End Sub
Krok 6: Teraz zostavíme a spustíme tento kód kliknutím na tlačidlo Prehrať, ako je uvedené nižšie. Dostaneme hlásenie s hodnotou uloženou v premennej A ako 1000 .
Teraz aplikujte VBA ByRef, vytvorte ďalšiu podkategóriu pod prvou a priraďte definovanú premennú z prvej podkategórie pomocou ByRef.
Krok 7: Týmto povolíme druhej podkategórii používať hodnoty uložené v premennej A.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo A = 1 000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A ako Integer) End Sub
Krok 8: Teraz zavolajte premennú A znova a odčítajte akúkoľvek hodnotu z premennej A, aby ste získali výstupnú hodnotu v rovnakej premennej. Odpočítajme 100 od hodnoty premennej A, aby sme dostali merateľné číslo.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo A = 1 000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A ako Integer) A = A - 100 End Sub
Krok 9: Ak teraz skompilujeme každý krok kódu, všimneme si, že keď kurzor dosiahne premennú A, uvidíme, že v ňom je uložených iba 0.
Krok 10: Keď kurzor dosiahne End Sub, výstup dostaneme ako 1000 v okne správy.
Krok 11: Je to preto, že sme nepriradili ByRef k prvej podkategórii. Teraz priradíme názov podkategórie pred funkciu schránky prvej podkategórie a uvidíme, čo sa stane.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A ako celé číslo) A = A - 100 End Sub
Krok 12: A teraz znova spustite celý kód. Uvidíme, že druhá hodnota, ktorá je uložená v premennej A ako 100, sa odpočíta od prvej hodnoty 1000. Výsledkom je, že výstupná správa bola 900.
Krok 13: Toto je hlavná výhoda použitia ByRef. Pre jednu úlohu nemusíme definovať viac premenných. Stačí jedna premenná na vykonanie celej úlohy rôznymi spôsobmi. V jednom module môžeme použiť viac ako jeden ByRef.
Aby sme dokázali, čo sme pochopili, pridajme ďalší ByRef do toho istého modulu.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo 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 ako Integer) End Sub
Krok 14: V tejto podkategórii použite násobenie.
kód:
Sub VBA_ByRef1 () Dim A ako celé číslo 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 ako Integer) A = A * 2 End Sub
Krok 15: Znova zostavte a znova spustite kód. Uvidíme, že hodnota získaná z vyššie uvedených krokov ako 900 sa teraz vynásobí 2 a získa sa 1800 ako výstup.
Excel VBA ByRef - Príklad č. 2
V tomto príklade uvidíme, ako ByRef pracuje s inými druhmi celých čísel.
Krok 1: Otvorte modul a napíšte podkategóriu, ako je to znázornené nižšie.
kód:
Sub VBA_ByRef4 () Koniec sub
Krok 2: Teraz definujte premennú A ako Double. To nám umožní použiť desatinné hodnoty.
kód:
Sub VBA_ByRef4 () Dim A ako dvojitý koniec Sub
Krok 3: Priraďte ľubovoľnú desatinnú hodnotu premennej A.
kód:
Sub VBA_ByRef4 () Dim A ako Double A = 1, 23 End Sub
Krok 4: Teraz znova použite okno správy, aby ste videli hodnotu uloženú v premennej A.
kód:
Sub VBA_ByRef4 () Dim A ako Double A = 1, 23 MsgBox A End Sub
Ak teraz spustíme kód, dostaneme ako výstup 1, 23.
Krok 5: Iným spôsobom použijeme Function na definovanie ByRef ako Double s premennou A.
kód:
Sub VBA_ByRef4 () Dim A ako Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A Double) ako funkcia Double End
Krok 6: Teraz pridajte akékoľvek číslo do premennej A. Povedzme, že je 10.
kód:
Sub VBA_ByRef4 () Dim A ako Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A Double) As Double A = A + 10 End Function
Krok 7: A znova použite túto definovanú funkciu ByRef v prvej podkategórii. Uvidíme dve správy, jednu pre premennú A a druhú pre ByRef.
kód:
Sub VBA_ByRef4 () Dim A ako Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function AddTwo (ByRef A Double) Double A = A + 10 End Function
Krok 8: To isté by sa prejavilo aj v okne správ.
Krok 9: A v ďalšom spustení dá pridanú hodnotu 10 do pôvodnej hodnoty premennej 1, 23, ako je uvedené nižšie.
Týmto spôsobom VBA Byref vezme odkaz na definovanú hodnotu raz a potom naplní výstup podľa novej podmienky.
Výhody a nevýhody VBA ByRef
- Pri písaní veľkých kódov šetrí veľa času tým, že zvažuje už definovanú premennú, takže jej hodnotu je možné znovu a znovu použiť.
- Nemusíme definovať veľa premenných podľa vzorca, ktorý chceme použiť.
- Môžeme použiť veľa ByRef podmienok v jednom module bez toho, aby sme narušili proces.
- VBA Byref nemôžeme používať v zložitej kódovej štruktúre.
Čo je potrebné pamätať
- Pri zvažovaní viac ako jednej podmienky ByRef bude výstup založený na poslednom čiastkovom postupe ByRef, ktorý sme definovali, ale tiež berie do úvahy všetky predtým použité podmienky ByRef.
- Konečný výstup bude mať sekvenčne spracovaný výstup. Nielen posledný.
- Tento proces nie je možné vykonať zaznamenaním makra.
- Zostavením kódu vidíme hodnotu uloženú v každej fáze premennej.
- Po dokončení uložte súbor programu Excel do formátu Excel v programe Macro Enabled, aby sme v budúcnosti nestratili kód.
Odporúčané články
Toto je sprievodca programom VBA ByRef. Tu diskutujeme o tom, ako používať funkciu ByRef v Exceli pomocou kódu VBA spolu s praktickými príkladmi a stiahnuteľnou šablónou Excel. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- Sprievodca funkciou VBA UBound
- Funkcia OFFSET Excel (príklad, použitie)
- Vytvorte hypertextový odkaz v Excel VBA
- Ako používať Excel Fill Handle?