VBA ByRef - Argumentum átadása az Excel VBA ByRef függvény használatával

Excel VBA ByRef függvény argumentum

A VBA-ban található ByRef egy olyan függvény, amelyet hivatkozásként hívnak meg , ahol hivatkozást adunk a kódunk bármely argumentumára, amikor egyéni függvényeket készítünk, és minden olyan változó értékét fel akarjuk használni, amelyet korábban a ByRef függvény használata előtt definiáltunk, a a használni kívánt szintaxis egyszerű, mint a Function Function-Name (ByRef Variable as Data Type).

A Byref használatával az eredeti változó értékére mutathatunk anélkül, hogy a változó értékét megváltoztatnánk. Ez olyan, mintha a változó értékét közvetlenül átadnánk a VBA alfolyamatnak vagy a VBA függvénynek.

Hogyan adjuk át az argumentumot a VBA ByRef Argumentummal?

1. példa

Nézze meg például az alábbi VBA kódot.

Kód1:

1. szakasz () Dim k As egész szám k = 50 eljárás2 k MsgBox k Vége Sub

2. kód:

2. aleljárás (ByRef k egész számként) k = k + 10 vége Sub

Az első eljárás során a „k” változót egész számnak nyilvánítottam.

Akkor ennek a változónak az értékét 50-nek rendeltem.

Ezt követően felvettem egy új sort, azaz

Eljárás2 k

Ez a második eljárásnév. Ebben az eljárásban a zárójelben szereplő változót Stringként deklaráltam a VBA-ban, de a „ByRef” szót használtam.

ByRef k egész számként

Itt hozzárendeltem a „k” változó értékét

k = k + 10

Ok, most az F8 billentyű lenyomásával futtatom a kódot lépésről lépésre.

Nyomja meg még kétszer az F8 billentyűt, és vigye a kurzort a „k” változóra a „k” változó értékének megtekintéséhez.

Mivel az értéket 50-nek rendeltük, ez az értéket 50-nek mutatja. Most kiemelte az Eljárás2 k sort , amely a második eljárásnév.

Ha most megnyomom az F8 billentyűt, akkor az kiugrik az aktuális eljárásból és a második eljárásra megy.

Mivel a ByRef szót használtuk, a fenti eljárás k-változó értékét hordozta.

Nyomja meg kétszer az F8 billentyűt. Visszatér az előző alfolyamathoz. Ha a második eljárás során észreveszi, akkor a képletet k = k + 10-ként alkalmaztam, azaz a „k” értéke 50, majd további 10-et ad hozzá, azaz összesen 60-at.

Most a kód az első eljárásban fut, és ebben az eljárásban a változó „k” értéke 50. De nyomja meg az F8 billentyűt, és az eredményt egy üzenetmezőben láthatja.

Ebben az eljárásban az alapértelmezett 50 helyett 60-at kaptunk.

Miért kaptunk 60-at, mert a második eljárásban „ByRef” -et alkalmaztunk, így az egyenlet eredményét (k = k + 10) átvitte a jelenlegi eljárásba.

Itt az első változó „k” értéke 50, a második eljárásban a „k” változó k + 10, azaz 60, amelyet az első eljáráshoz viszünk.

Az első eljárás során a „k” változó eredeti értéke 50 volt, így a Ref a k = k + 10 egyenlet végrehajtásával 50-ről 60-ra változtatta az eredeti értéket, azaz k = 50 +10 = 60.

2. példa

Most nézzen meg még egy példát.

1. kód:

P1 alrész () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) '' A MyNumber-t a Change_ByRef eljárás módosítja MsgBox "A számom most van:" & Saját szám End Sub


2. kód:

Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub

Ez pontosan ugyanúgy működik, mint az előző kód.

Kezdetben a „MyNumber” változó értéke 1. Ezután az alábbi eljárást nevével hívjuk meg

Hívás Change_ByRef (Saját szám)

Ebben az eljárásban a változó értéke 14.

Tehát, amikor visszatér az előző eljáráshoz, az új értéket a változóhoz rendeli, mint 14.

érdekes cikkek...