Argument funkcie Excel VBA ByRef
ByRef vo VBA je funkcia nazývaná ako odkaz, kde poskytujeme odkaz na akékoľvek argumenty v našom kóde, keď robíme vlastné funkcie a chceme použiť hodnotu akejkoľvek premennej, ktorá je definovaná skôr, ako pred funkciou, ktorú použijeme funkciu ByRef, syntax, ktorá sa má použiť, je jednoduchá ako funkcia funkcia-názov (premenná ByRef ako typ údajov).
Použitím Byref môžeme ukazovať na pôvodnú hodnotu premennej bez zmeny hodnoty premennej. Je to ako odovzdať hodnotu premennej priamo podprocesu VBA alebo funkcii VBA.

Ako odovzdať argument pomocou argumentu VBA ByRef?
Príklad č
Napríklad sa pozrite na nižšie uvedený kód VBA.
Kód1:
Sub Procedúra1 () Dim k As Integer k = 50 Procedúra 2 k MsgBox k End Sub

Kód2:
Sub postup2 (ByRef k ako celé číslo) k = k + 10 koncový sub

V prvom postupe som deklaroval premennú „k“ ako celé číslo.
Potom som tejto premennej priradil hodnotu ako 50.
Potom som pridal nový riadok tj
Postup2 k
Toto je druhý názov postupu. V tomto postupe som deklaroval premennú v zátvorke ako String vo VBA, ale použil som slovo „ByRef“.
ByRef k Ako celé číslo
Tu som priradil hodnotu premennej „k“ ako
k = k + 10
Dobre, teraz spustím kód krok za krokom stlačením klávesu F8.


Stlačte kláves F8 ešte dvakrát a umiestnite kurzor na premennú „k“, aby ste videli hodnotu premennej „k“.

Pretože sme priradili hodnotu 50, zobrazuje sa jej hodnota 50. Teraz zvýraznila riadok Procedure2 k, čo je druhý názov procedúry.
Ak teraz stlačím kláves F8, vyskočí z aktuálneho postupu a prejde na druhý postup.

Teraz, keď sme použili slovo ByRef, prenieslo hodnotu premennej „k“ z vyššie uvedeného postupu.

Dvakrát stlačte kláves F8. Vráti sa späť na predchádzajúci podproces. Ak si všimnete v druhom postupe, použil som vzorec ako k = k + 10. tj. Hodnota „k“ je 50, potom k nej pripočítam ďalších 10, tj. Celkom 60.

Teraz je kód spustený v prvom postupe a v tomto postupe je hodnota premennej „k“ 50. Stlačte ale kláves F8 a uvidíte výsledok v okne správy.

Výsledok v tomto postupe bol 60, namiesto predvolenej hodnoty 50.
Dôvod, prečo sme dostali 60, pretože v druhom postupe sme použili „ByRef“, takže do aktuálneho postupu preniesol výsledok rovnice (k = k + 10).
Tu je prvá hodnota premennej „k“ 50 a v druhej procedúre hodnota „k“ hodnota k + 10, tj. 60, ktorá sa prenesie do prvého postupu.
V prvom postupe bola pôvodná hodnota premennej „k“ 50, takže funkcia Ref zmenila pôvodnú hodnotu z 50 na 60 vykonaním rovnice k = k + 10, tj. K = 50 +10 = 60.
Príklad č
Teraz sa pozrite na ešte jeden príklad.
Kód 1:
Sub P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber is changed by the Change_ByRef procedure MsgBox "My Number is now:" & MyNumber End Sub
Kód 2:
Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub

Toto funguje úplne rovnako ako predchádzajúci kód.
Na začiatku je hodnota premennej „MyNumber“ 1. Potom nazveme nižšie uvedený postup menom
Zavolať Change_ByRef (MyNumber)
V tomto postupe je hodnota premennej 14.
Keď sa teda vráti k predchádzajúcemu postupu, priradí novej hodnote premennej hodnotu 14.
