See on üks VBA intervjuudes enim küsitud küsimusi. Selles artiklis saame teada, mis vahe on Exceli VBA ByVal ja ByRef argumentidel.
Mõisted:
ByRef argument: See on viitena sõna otseses mõttes lühike vorm. Kui argument edastatakse ByRef argumendina teisele alam- või funktsioonile, saadetakse tegeliku muutuja viide. Kõik muutuja koopiasse tehtud muudatused kajastuvad algses argumendis.
Võime öelda, et väärtuse asemel saadetakse funktsiooni asukohta funktsiooni abil funktsiooni ByRef abil väärtuse asukoht.
See on VBA vaikeargument. Me ei pea enne vaidlust kirjutama ByRef.
Süntaks:
Sub x (a kui variant)
„Või
Alam x (ByRef a kui variant)
ByVali argument: See on sõna otseses mõttes väärtus. Kui argument edastatakse ByVali argumendina teisele alam- või funktsioonile, saadetakse ainult argumendi väärtus. Algne argument jäetakse puutumata. Kõik välisfunktsioonis või alamosas tehtud muudatused ei kajastu algses argumendis.
Argumendi ByValiks kuulutamiseks peate enne argumenti kasutama märksõna ByVal.
Süntaks:
Sub x (ByVal a kui variant)
Nüüd teame määratlusi. Vaatame näidet ja saame sellest üle.
ByRef näide
Siin on lihtne programm.
Alam X (ByRef a Variant) a = 20 Silumine. Printige "a" X alamväärtuses a = "& a Lõpu alamjaotis Y () a = 10 Helista X (a) Silumine. Prindi "alam Y väärtuses a =" & a End Sub
Niisiis, siin on meil kaks alamprogrammi. Esimene alam on X, mis võtab argumendi variandi kui ByRef.
(Võite märksõna ByRef välja jätta. See on vaikimisi.)
Järgmisena määrab see väärtuse a = 20 end, seejärel prindib väärtuse a.
Sub Y on peamine alamprogramm, mida nimetatakse alamprogrammiks X. See määrab väärtuse a = 10 seejärel kutsub alamprogrammi X ja läbiba argumendina. Seejärel prindib see väärtuse a aastal Y.
Nüüd, kui käivitate Sub Y, saate selle väljundi.
alam X väärtuses a = 20
alam Y väärtuses a = 20
Järeldus: algse a väärtust muudab alam X ja see määratakse mõlema alamosa jaoks väärtuseks 20.
näete, et alam Y käivitamisel oli a algväärtus 10. Y kutsub X (a). X määrab väärtuse a = 20. See prindib "alam X väärtuses a = 20". Juhtimine läheb tagasi y -le ja prindib alam Y väärtuseks a = 20.
See on ByRefi argumendi mõju.
ByVal näide:
See on ByVali näide
Sub X (ByVal a Variant) a = 20 Silumine. Printige "a" X alamväärtuses a = "& a Lõpu alamjaotis Y () a = 10 Helista X (a) Silumine. Prindi "alam Y väärtuses a =" & a End Sub
Mõlemad näited on samad, ainsa erinevusega argumentide edastamisel. Siin X -s on argumendid deklareeritud kui ByVal. Kui käivitate Y alamprogrammi seekord, on väljund järgmine:
alam X väärtuses a = 20
alam Y väärtuses a = 10
Järeldus: alam X ei muuda algse a väärtust. X puhul on see 20 ja Y puhul 10.
Kui Y helistab X -le a -ga, saadab see ainult a väärtuse, mitte aadressi a. Seega ei kajastu a -s tehtud muudatused algses muutujas.
Testimiseks, kui trükiväärtus on a X -s enne selle seadmist 20 -le prindib see 10. Kuna 10 edastatakse a -le X, kasutades byVal. Teie poolt saadetud ByRefi kasutamine a Y -st et a X -st.
See on lihtne küsimus, kuid paljud meist ajavad selle segadusse vba intervjuu küsimuses. Põhjus on selles, et me ei saa seda palju kasutada. Enamasti kopeerime väärtuse erinevatesse muutujatesse.
Nii et jah, poisid, see on erinevus Exceli VBA ByRef ja ByVal argumentides. Andke mulle teada, kui teil on selle teema või mõne muu VBA või Exceli teema osas kahtlusi. Kommentaaride jaotis on kõik teie.
Uue töövihiku lisamine ja salvestamine Microsoft Excel 2016 VBA abil
Kuva teade Exceli VBA olekuribal
Lülitage hoiatussõnumid välja Microsoft Excel 2016 VBA abil
Populaarsed artiklid:
Funktsioon VLOOKUP Excelis
COUNTIF Excelis 2016
Funktsiooni SUMIF kasutamine Excelis