Co je ByRef ve VBA?

Byref ve VBA znamená „By Reference“. S pomocí VBA Byref můžeme zacílit na původní hodnotu bez změny hodnoty uložené v proměnných. Jinými slovy, budeme přímo předávat hodnotu Sub procedurám namísto běžných metod definování a přiřazování hodnot k proměnným.

Ve VBA ByRef definujeme dílčí postup poté, co nastavíme pravidlo pro ByRef. To lze provést pod dílčím postupem, kde chceme kód napsat. V ByRef znovu definujeme proměnnou, která se používá v proceduře Sub. A funguje to správně pouze tehdy, když v našem podprocesu nazýváme podmínku ByRef.

Jak používat funkci ByRef v aplikaci Excel VBA?

Níže jsou uvedeny různé příklady použití funkce ByRef v Excelu pomocí kódu VBA.

Tuto šablonu VBA ByRef Excel si můžete stáhnout zde - VBA ByRef Excel Template

Excel VBA ByRef - Příklad č. 1

Nejprve se naučíme, jak vložit ByRef do VBA, proto postupujte podle níže uvedených kroků. V tomto příkladu uvidíme, jak používat VBA ByRef pro jednoduchou matematickou odečtení. K tomu bychom potřebovali modul.

Krok 1: Takže přejděte na VBA a otevřete modul z nabídky Vložit, jak je ukázáno níže.

Krok 2: Do nově otevřeného modulu napište níže uvedenou podkategorii VBA ByRef.

Kód:

 Sub VBA_ByRef1 () End Sub 

Krok 3: Nyní definujte proměnnou, řekněme, že je A jako celé číslo.

Kód:

 Sub VBA_ByRef1 () Dim A jako celé číslo End Sub 

Krok 4: Přiřaďte libovolné číslo proměnné A. Nechť je toto číslo 1000.

Kód:

 Sub VBA_ByRef1 () Dim A jako celé číslo A = 1000 End Sub 

Krok 5: K tisku hodnoty uložené v proměnné A bychom použili Msgbox.

Kód:

 Sub VBA_ByRef1 () Dim A jako celé číslo A = 1000 MsgBox A End Sub 

Krok 6: Nyní zkompilujeme a spustíme tento kód kliknutím na tlačítko Přehrát, jak je ukázáno níže. Dostaneme zprávu s hodnotou uloženou v proměnné A jako 1000 .

Nyní aplikujte VBA ByRef, vytvořte pod první kategorii další podkategorii a pomocí ByRef přiřaďte definovanou proměnnou z první podkategorie.

Krok 7: Tím umožníte druhé podkategorii používat hodnoty uložené v proměnné A.

Kód:

 Sub VBA_ByRef1 () Dim A jako celé číslo A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A jako Integer) End Sub 

Krok 8: Nyní volejte proměnnou A znovu a odečtěte jakoukoli hodnotu z proměnné A, abyste získali výstupní hodnotu ve stejné proměnné. Odečtěte 100 od hodnoty proměnné A, abychom získali měřitelné číslo.

Kód:

 Sub VBA_ByRef1 () Dim A jako celé číslo A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A jako Integer) A = A - 100 End Sub 

Krok 9: Když nyní zkompilujeme každý krok kódu, všimneme si, že když kurzor dosáhne proměnné A, uvidíme, že v něm je uloženo pouze 0.

Krok 10: Když kurzor dosáhne End Sub, výstup dostaneme jako 1000 v okně zprávy.

Krok 11: Je to proto, že jsme nepřidělili ByRef do první podkategorie. Nyní přidělíme název podkategorie před funkci schránky první první podkategorie a uvidíme, co se stane.

Kód:

 Sub VBA_ByRef1 () Dim A jako celé číslo A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A jako Integer) A = A - 100 End Sub 

Krok 12: A nyní spusťte znovu celý kód. Uvidíme, že druhá hodnota, která je uložena v proměnné A jako 100, byla odečtena od první hodnoty 1000. Výsledkem je, že výstupní zpráva byla 900.

Krok 13: Toto je hlavní výhoda používání ByRef. Pro jednu úlohu nemusíme definovat více proměnných. Stačí jedna proměnná k provedení celého úkolu různými způsoby. V jednom modulu můžeme použít více než jeden ByRef.

Abychom ospravedlnili, co jsme pochopili, přidáme další ByRef do stejného modulu.

Kód:

 Sub VBA_ByRef1 () Dim A jako 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 jako Integer) End Sub 

Krok 14: V této podkategorii použijte násobení.

Kód:

 Sub VBA_ByRef1 () Dim A jako 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 jako Integer) A = A * 2 End Sub 

Krok 15: Znovu zkompilujte a znovu spusťte kód. Uvidíme, že hodnota získaná z výše uvedených kroků jako 900 je nyní vynásobena 2 a získá se 1800 jako výstup.

Excel VBA ByRef - Příklad č. 2

V tomto příkladu uvidíme, jak ByRef pracuje s jinými druhy celých čísel.

Krok 1: Otevřete modul a napište podkategorii, jak je ukázáno níže.

Kód:

 Sub VBA_ByRef4 () End Sub 

Krok 2: Nyní definujte proměnnou A jako Double. To nám umožní použít desetinné hodnoty.

Kód:

 Sub VBA_ByRef4 () Dim A jako Double End Sub 

Krok 3: Přiřaďte libovolnou desetinnou hodnotu proměnné A.

Kód:

 Sub VBA_ByRef4 () Dim A jako Double A = 1, 23 End Sub 

Krok 4: Nyní znovu použijte okno se zprávou k zobrazení hodnoty uložené v proměnné A.

Kód:

 Sub VBA_ByRef4 () Dim A jako Double A = 1, 23 MsgBox A End Sub 

Nyní, když spustíme kód, dostaneme jako výstup 1, 23.

Krok 5: Jiným způsobem použijeme Function k definování ByRef jako Double s proměnnou A.

Kód:

 Sub VBA_ByRef4 () Dim A jako Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A Double) jako Double End Function 

Krok 6: Nyní přidejte libovolné číslo do proměnné A. Řekněme, že je 10.

Kód:

 Sub VBA_ByRef4 () Dim A jako Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A Double) As Double A = A + 10 End Function 

Krok 7: A znovu použijte tuto definovanou funkci ByRef v první podkategorii. Zde uvidíme dvě zprávy, jednu pro proměnnou A a druhou pro ByRef.

Kód:

 Sub VBA_ByRef4 () Dim A jako Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function AddTwo (ByRef A Double) As Double A = A + 10 End Function 

Krok 8: Totéž by se projevilo i v okně se zprávou.

Krok 9: A v dalším běhu dá přidanou hodnotu 10 do původní hodnoty proměnné 1, 23, jak je ukázáno níže.

Takto VBA Byref vezme odkaz na definovanou hodnotu jednou a poté naplní výstup podle nové podmínky.

Výhody a nevýhody VBA ByRef

  • Při psaní velkých kódů šetří spoustu času zvážením již definované proměnné, takže její hodnotu lze znovu a znovu použít.
  • Nemusíme definovat mnoho proměnných podle vzorce, který chceme použít.
  • Můžeme použít mnoho podmínek ByRef v jednom modulu, aniž bychom proces narušili.
  • VBA Byref nemůžeme používat ve složité kódové struktuře.

Co si pamatovat

  • Při zvažování více než jedné podmínky ByRef bude výstup založen na posledním dílčím postupu ByRef, který jsme definovali, ale také vezme v úvahu všechny dříve použité podmínky ByRef.
  • Konečný výstup bude mít sekvenčně zpracovaný výstup. Nejen poslední.
  • Tento proces nelze provést zaznamenáním makra.
  • Kompilací kódu můžeme vidět hodnotu uloženou v každé fázi proměnné.
  • Jakmile to uděláte, uložte soubor Excel ve formátu Excel s aktivovaným makrem, abychom v budoucnu neztratili kód.

Doporučené články

Toto je průvodce VBA ByRef. Zde diskutujeme o tom, jak používat funkci ByRef v Excelu pomocí kódu VBA spolu s praktickými příklady a stahovatelnou šablonou Excel. Další informace naleznete také v následujících článcích -

  1. Průvodce funkcí VBA UBound
  2. Funkce OFFSET Excel (příklad, použití)
  3. Vytvořit hypertextový odkaz v aplikaci Excel VBA
  4. Jak používat Excel Fill Handle?

Kategorie: