VBA ByRef | Předat argument pomocí funkce Excel VBA ByRef

Argument funkce Excel VBA ByRef

ByRef ve VBA je funkce nazývaná jako odkaz, kde poskytujeme odkaz na všechny argumenty v našem kódu, když vytváříme vlastní funkce a chceme použít hodnotu jakékoli proměnné, která je definována dříve před funkcí, kterou používáme funkci ByRef, syntaxe k použití je jednoduchá jako funkce název funkce (proměnná ByRef jako datový typ).

Použitím Byref můžeme ukázat na původní hodnotu proměnné bez změny hodnoty proměnné. Je to jako předání hodnoty proměnné přímo do podprocesu VBA nebo funkce VBA.

Jak předat argument pomocí VBA ByRef Argument?

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

Příklad č. 1

Například se podívejte na níže uvedený kód VBA.

Kód1:

 Sub Procedura1 () Dim k As Integer k = 50 Procedura 2 k MsgBox k End Sub 

Kód2:

 Dílčí postup2 (ByRef k jako celé číslo) k = k + 10 End Sub 

V prvním postupu jsem deklaroval proměnnou „k“ jako celé číslo.

Pak jsem této proměnné přidělil hodnotu 50.

Poté jsem přidal nový řádek, tj

Postup 2 k

Toto je druhý název procedury. V tomto postupu jsem deklaroval proměnnou v závorkách jako řetězec ve VBA, ale použil jsem slovo „ByRef“.

 ByRef k jako celé číslo 

Zde jsem přiřadil hodnotu proměnné „k“ jako

k = k + 10

Dobře, nyní spustím kód krok za krokem stisknutím klávesy F8.

Stiskněte klávesu F8 ještě dvakrát a umístěte kurzor na proměnnou „k“, abyste viděli hodnotu proměnné „k“.

Protože jsme přiřadili hodnotu 50, zobrazuje ji jako 50. Nyní zvýraznila řádek Procedura k, což je druhý název procedury.

Pokud nyní stisknu klávesu F8, vyskočí z aktuální procedury a přejde na druhou proceduru.

Nyní, protože jsme použili slovo ByRef, přeneslo hodnotu proměnné „k“ z výše uvedeného postupu.

Dvojitým stisknutím klávesy F8 se vrátíte na předchozí dílčí postup. Pokud si všimnete ve druhém postupu, použil jsem vzorec jako k = k + 10. tj. Hodnota „k“ je 50, pak k tomu přidám dalších 10, tj. Celkem 60.

Nyní je kód spuštěn v první proceduře a v této proceduře je hodnota proměnné „k“ 50. Stiskněte ale klávesu F8 a uvidíte výsledek v okně se zprávou.

V tomto postupu jsme dostali výsledek jako 60 místo výchozí hodnoty 50.

Důvod, proč jsme dostali 60, protože ve druhém postupu jsme použili „ByRef“, takže přenesl výsledek rovnice (k = k + 10) do aktuálního postupu.

Zde je první hodnota proměnné „k“ 50 a ve druhém postupu je hodnota proměnné „k“ k + 10, tj. 60, která je přenesena do prvního postupu.

V prvním postupu byla původní hodnota proměnné „k“ 50, takže By Ref změnil původní hodnotu z 50 na 60 provedením rovnice k = k + 10, tj. K = 50 +10 = 60.

Příklad č. 2

Nyní se podívejme na další pří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 

To funguje přesně stejně jako předchozí kód.

Zpočátku je hodnota proměnné „MyNumber“ 1. Pak pojmenujeme níže uvedenou proceduru

 Zavolat Change_ByRef (MyNumber)

V tomto postupu je hodnota proměnné 14.

Když se tedy vrátí k předchozímu postupu, přiřadí proměnné novou hodnotu jako 14.