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 TemplateExcel 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 -
- Průvodce funkcí VBA UBound
- Funkce OFFSET Excel (příklad, použití)
- Vytvořit hypertextový odkaz v aplikaci Excel VBA
- Jak používat Excel Fill Handle?