Č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 Excel

Excel 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 -

  1. Sprievodca funkciou VBA UBound
  2. Funkcia OFFSET Excel (príklad, použitie)
  3. Vytvorte hypertextový odkaz v Excel VBA
  4. Ako používať Excel Fill Handle?

Kategórie: