Paraméterátadás az eljárások és függvények a VBA-ban
Paraméterátadás az eljárások és függvények a VBA, opcionális (nem kötelező) paraméterei az átviteli kapcsolat (ByRef) és érték (ByVal), a használata a kapcsolatok az átviteli paramétereket
Paraméterek - értékek, amelyeket át az egyikből a másikba eljárást. Elvileg megteheti paraméterek nélkül, kizárólag a modul szintű változók, de a paramétereket a program javítja az olvashatóságot. Ez az eljárás képes volt elfogadni a paramétereket, akkor először nyilvánítja az alábbi paraméterekkel. Például itt egy példa egy egyszerű függvény, amely összead két számot, és megjeleníti az eredményt:
Funkció fSum (nItem1 As Integer, nItem2 As Integer)
fSum = nItem1 + nItem2
Nevezzük a következőképpen nézhet ki:
Ebben az esetben azt jelentette mindkét paramétert, mint a kötelező, ezért arra törekszik, hogy hívja a funkció nélkül halad, hogy egy paraméter (például: MsgBox (fSum (3))) eredményez hibát „érv nem kötelező” - „paraméter nem választható” . Ahhoz, hogy át néhány paramétert, ezeket a paramétereket lehet kötelező. Erre a célra használja a kulcsszó kötelező:
Funkció fSum (nItem1 As Integer, fakultatív nItem2 As Integer)
Segítség a VBA beépített funkciókat az opcionális paraméterek szögletes zárójelek között.
Annak ellenőrzésére, hogy egy opcionális paraméter adása, használható akár IsMissing funkciót (ha ez a paraméter már használt Variant típusú), vagy az értéke összehasonlításra kerül az alapértelmezett értéket (nulla numerikus adatokat egy üres string karakterlánc, stb)
Egy funkció paraméter átadással a következőképpen nézhet ki:
nResult = fSum (3, 2)
Van azonban néhány dolog, hogy meg kell oldani.
A mi példánkban paraméterátadásra helyzetben van, azaz az érték 3 rendelt az első paraméter (nItem1) és a 2 értéket - a második (nItem2). Azonban a paraméterek átadhatók név szerint:
nResult = fSum (nItem 1 = 3, nItem 2: = 2)
Kérjük, vegye figyelembe, hogy annak ellenére, hogy itt véget ért nagyon ismerős működését - az értékek hozzárendelése az értékadó operátor használják nem egészen normális - a vastagbél egyenlőségjellel, mint a C ++. Amikor az egyenlőségjel hibát.
Természetesen, hanem a kifejezett értékközvetítés (mint mi - 3 és 2), akkor változókat. Mi történik azonban, hogy a változók után „látogatás” a funkciót, ha a funkció módosítja az értékét? Ez az érték kívül a függvény ugyanaz marad, vagy változás?
Minden attól függ, hogy a paraméterek telt el - referenciaként (alapértelmezés szerint akkor is használhatja a kulcsszó ByRef vagy értékben - ki kell használni a kulcsszó ByVal).
Ha a paraméterek érték szerint adódnak át, akkor valójában a memóriában egy másolatot a változó nevű eljárást, és a másolatot továbbítjuk. Persze, hogy nem, hogy ezt a példányt, az eredeti változó nem érintett, és nem befolyásolja a hívó eljárás.
Annak igazolására, a különbség lehet egy egyszerű példa:
Private Sub TestProc ()
„Változót nPar1 és rendeljen hozzá egy értéket
Dim nPar1 As Integer
„Átadja paraméterként a funkció nItem1 fSum
MsgBox (fSum (nItem1: = nPar1, nItem2: = 2))
„És most megnézzük, mi lett a változó nPar1,” miután meglátogatta fSum funkciók:
Funkció fSum (nItem1 As Integer, nItem2 As Integer)
„Az általunk használt változó értékét
fSum = nItem 1 + nItem 2
„És akkor én voltam!
Funkció fSum (nItem1 As Integer, nItem2 As Integer)
a következő sorban.
Funkció fSum (ByVal nItem1 As Integer, nItem2 As Integer)
Akkor bizonyítani VBA fordítóprogram, hogy mi a funkciója visszatér, nem vagyunk érdekeltek. Elég, hogy ne kösse érveit zárójelben. Például abban az esetben, beépített Msgbox ez a következőképpen nézhet ki:
és a mi funkció -
Ez a kód működik tökéletesen. Ha azonban meg kell még találni arra, hogy a MsgBox vissza, akkor meg kell adnia a paraméterek átadott zárójelben:
Sok beépített funkció VBA fordító, elvileg lehetetlenné teszi figyelmen kívül hagyja a visszatérési érték, arra kényszerítve, hogy a paramétereket zárójelben, és megteszi a visszatérési érték.