VBA ByVal - Hogyan kell használni a ByVal Function Argument? (Példák)

Excel VBA ByVal Function argumentum

A ByVal egy nyilatkozat a VBA-ban. A ByVal azt jelenti, hogy By Value, azaz amikor az eljárásból behívott alfolyamat a változók értékét visszaállítja a meghívott új eljárás új értékére.

A VBA-ban, amikor különböző függvényekben meghívott függvényekkel dolgozunk, bizonyos körülmények között az eredeti argumentum értéke megváltozik a függvény meghívásakor; a byval utasítás tiltja az argumentum értékét megváltoztató eljárást vagy kódot.

Tudom, hogy a magyarázat elolvasásával nem könnyű megérteni, de a funkció gyakorlati példáival valójában jobban megértjük.

Hogyan használható a ByVal Argument a VBA-ban?

1. példa

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

Kód:

1. makró1 () Dim k As Egész szám k = 50 Makró2 k MsgBox k Vége Sub
2. makró2 (ByVal k egész számként) k = k + 5 vége alsz

A fenti két makroeljárásban az összes eljáráson belül közös „k” változóval rendelkezünk. Hadd magyarázzam el ezt részletesen, mielőtt látnánk az eredményt.

Az első makróban az 50 értéket rendeltük a „k” változóhoz.

Dim k As egész szám k = 50

Ezután az első makróból meghívtuk a második makróeljárást.

Makró2 k

A Macro2-ben a változó értékét visszaállítottuk k = k + 5 értékre. Ebben a makróban a ByVal argumentummal értéket rendeltünk a „k” változóhoz.

A „ByVal” megértése érdekében futtassuk soronként a VBA kódot az F8 billentyű lenyomásával.

# 1 - Az F8 billentyű első megnyomásakor kiemeli a Macro1 első vonalát.

Ebben az időpontban helyezzen egy kurzort a „k” változóra, és megmutatja a „k” változó értékét.

Jelenleg a „k” értéke nulla.

# 2 - Nyomja meg még egyszer az F8 billentyűt, és a harmadik sorra ugrik.

Most is a „k” értéke nulla.

# 3 - Nyomja meg az F8 billentyűt, és nézze meg a k értékét.

Mivel a „k” érték 50-re van állítva, és a kód végrehajtásra kerül, így az érték 50-nek tűnik.

# 4 - Most a kiemelt sor „Macro2 k”, azaz az F8 billentyű lenyomásával a második eljárásra, a Macro2-re ugrik.

# 5 - Most is a „k” változó értéke ebben az eljárásban 50-ként jelenik meg. De ebben a makrón belül a „k” változó értékét visszaállítjuk k = k + 5, azaz 55 értékre. Most nyomja meg a Az F8 billentyűt még kétszer.

Mint fent látható, a „k” értéke most 55.

# 6 - Nyomja meg az F8 billentyűt, és ez visszatér a Macro1 eljáráshoz.

Amikor a makró visszatért az eredeti Macro1 eljáráshoz, a változó „k” értékünk már nem 55, hanem inkább az eredeti érték ebben az eljárásban, azaz 50.

Amikor megnyomja az F8 billentyűt, csak 50-et láthatunk a VBA üzenetmezőjében.

Tehát, amint azt a cikk elején elmondtuk, a „ByVal” argumentum nem hordoz értékeket egyik eljárásból a másikba, annak ellenére, hogy a változó értékét az első makróról a másodikra ​​hordozza, amikor a sorral találkozik. ByVal ”, amikor visszatér az eredeti makróhoz, az értéket csak az eljárás során állítja vissza eredeti értékre.

2. példa

Most vessen egy pillantást az alábbi két makróra.

Kód:

P1 alrész () Dim k egész számként: k = 10 Hívja P2 (k) MsgBox k Vége alrész
P2 rész (ByVal k egész számként) k = 15 Vége Sub
  • Ez hasonló az első példához. A „P1” makrón a 10 értéket rendeltük a „k” változóhoz, és ugyanabban a „P1” makróban a második makrót „P2” -nek neveztük „k” változóval.
  • A második „P2” makróban a ByVal argumentumot használtuk, és ezúttal a „k” változó értéke 15.

Ez a makró a „k” változó értékét tízként hordozza a „P1” makróról a „P2” makróra, és ebben a makróban az érték 15-re áll vissza, de abban a pillanatban, amikor visszatér, befejezi a makrót az első makróig „P1” a „k” értéke 10-re, nem pedig 15-re.

Dolgok, amikre emlékezni kell

A ByVal argumentum a makró futtatása után sem befolyásolja a változó értékét, de a By Ref argumentummal átvihetjük a változó értékét egyik makróról a másikra.

érdekes cikkek...