VBA ByRef | Perduokite argumentą naudodami „Excel VBA ByRef“ funkciją
„Excel VBA ByRef“ funkcijos argumentas
„ByRef“ VBA yra funkcija, vadinama nuoroda, kur mes pateikiame nuorodą į visus mūsų kodo argumentus, kai darome pasirinktines funkcijas ir norime naudoti bet kurio kintamojo, kuris anksčiau buvo apibrėžtas prieš funkciją, kurią naudojame „ByRef“, reikšmę, sintaksė yra paprasta kaip Funkcijos Funkcijos pavadinimas („ByRef“ kintamasis kaip duomenų tipas).
Naudodami Byref galime nurodyti pradinę kintamojo vertę nekeisdami kintamojo vertės. Tai panašu į kintamosios vertės perdavimą tiesiogiai VBA subprocedūrai arba VBA funkcijai.
Kaip perduoti argumentą naudojant VBA ByRef argumentą?
Šį „VBA ByRef Excel“ šabloną galite atsisiųsti čia - „VBA ByRef Excel“ šablonas1 pavyzdys
Pavyzdžiui, pažvelkite į žemiau esantį VBA kodą.
Kodas1:
1 procedūra () Dim k As sveikoji k = 50 Procedūra2 k MsgBox k End Sub
Kodas2:
Antrinė antrinė procedūra (ByRef k kaip sveikasis skaičius) k = k + 10 Pabaigos antrinis
Pirmosios procedūros metu kintamąjį „k“ paskelbiau sveikuoju skaičiumi.
Tada priskyriau šio kintamojo vertę kaip 50.
Po to aš pridėjau naują eilutę, t
Procedūra2 k
Tai yra antrasis procedūros pavadinimas. Šioje procedūroje skliausteliuose kintamąjį paskelbiau kaip eilutę VBA, tačiau naudojau žodį „ByRef“.
ByRef k kaip sveikasis skaičius
Čia priskyriau kintamojo „k“ vertę kaip
k = k + 10
Gerai, dabar aš paleidžiu kodą žingsnis po žingsnio paspausdamas klavišą F8.
Dar du kartus paspauskite klavišą F8 ir padėkite žymeklį ant kintamojo „k“, kad pamatytumėte kintamojo „k“ vertę.
Kadangi priskyrėme vertę kaip 50, ji rodo vertę kaip 50. Dabar ji paryškino eilutę Proced2 k, kuri yra antrasis procedūros pavadinimas.
Jei dabar paspausiu F8 klavišą, jis iššoks iš dabartinės procedūros ir pereis prie antrosios procedūros.
Kadangi mes naudojome ByRef žodį, jis turėjo kintamojo „k“ vertę iš pirmiau nurodytos procedūros.
Du kartus paspauskite klavišą F8, tada grįšite į ankstesnę antrinę procedūrą. Jei pastebėsite per antrąją procedūrą, aš pritaikiau formulę kaip k = k + 10. ty „k“ reikšmė yra 50, tada prie tos sumos pridėsite dar 10.
Dabar kodas vykdomas pagal pirmąją procedūrą ir šioje procedūroje kintamojo „k“ reikšmė yra 50. Tačiau paspauskite klavišą F8 ir pamatykite rezultatą pranešimo laukelyje.
Šioje procedūroje rezultatas buvo 60, o ne numatytoji 50.
Priežastis, kodėl gavome 60, nes per antrąją procedūrą pritaikėme „ByRef“, todėl dabartinei procedūrai ji suteikė lygties rezultatą (k = k + 10).
Čia pirmojo kintamojo „k“ vertė yra 50, o antrojoje procedūroje kintamojo „k“ vertė yra k + 10, ty 60, kuri perkeliama į pirmąją procedūrą.
Pirmosios procedūros metu kintamojo „k“ pradinė vertė buvo 50, todėl „By Ref“ pakeitė pradinę vertę nuo 50 iki 60, vykdant lygtį k = k + 10, ty k = 50 +10 = 60.
2 pavyzdys
Dabar pažvelk į dar vieną pavyzdį.
1 kodas:
P1 poskyris () Tamsinti mano numerį taip ilgai, kaip Mano numeris = 1 Skambinti Change_ByRef (Mano numeris) 'Mano numerį pakeičia „Change_ByRef“ procedūra MsgBox „Mano numeris dabar:“ & Mano numeris Pabaiga
2 kodas:
Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 pabaigos sub
Tai veikia lygiai taip pat, kaip ir ankstesnis kodas.
Iš pradžių kintamojo „MyNumber“ vertė yra 1. Tada mes pavadiname toliau nurodytą procedūrą jo pavadinimu
Skambinti „Change_ByRef“ („MyNumber“)
Taikant šią procedūrą, kintamojo vertė yra 14.
Taigi, kai grįšite prie ankstesnės procedūros, kintamajam priskirs naują vertę kaip 14.