VBA ByRef | Edastage argument Exceli VBA funktsiooni ByRef abil
Exceli VBA ByRef-funktsiooni argument
VBA-s ByRef on funktsioon, mida kutsutakse viitena, kus esitame viite mis tahes meie koodi argumentidele, kui teeme kohandatud funktsioone ja soovime kasutada mis tahes muutuja väärtust, mis on varem määratletud enne funktsiooni, mida kasutame funktsiooni ByRef, kasutatav süntaks on lihtne kui Funktsioon Funktsiooni nimi (ByRef Variable as Data Type).
Byrefi kasutades saame osutada algsele muutuja väärtusele muutuja väärtust muutmata. See on nagu muutuja väärtuse edastamine otse VBA alamprotseduurile või funktsioonile VBA.
Kuidas edastada argumenti VBA ByRefi argumendi abil?
Selle VBA ByRef Exceli malli saate alla laadida siit - VBA ByRef Exceli mallNäide 1
Näite saamiseks vaadake allpool olevat VBA-koodi.
Kood1:
Alamprotseduur1 () Mõõt k täisarvuna k = 50 Protseduur2 k MsgBox k Lõpp-alam
Kood2:
Alamprotseduur2 (ByRef k täisarvuna) k = k + 10 Lõpp-alam
Esimeses protseduuris olen deklareerinud muutuja “k” täisarvuna.
Siis olen määranud selle muutuja väärtuseks 50.
Pärast seda olen lisanud uue rea st
Protseduur2 k
See on teine protseduuri nimi. Selles protseduuris olen deklareerinud sulgudes muutuja Stringina VBA-s, kuid olen kasutanud sõna “ByRef”.
ByRef k täisarvuna
Siin olen määranud muutuja “k” väärtuseks
k = k + 10
Ok, nüüd käivitan koodi sammhaaval, vajutades klahvi F8.
Vajutage klahvi F8 veel kaks korda ja asetage kursor muutujale „k”, et näha muutuja „k” väärtust.
Kuna oleme määranud väärtuseks 50, näitab see väärtust 50. Nüüd on see esile tõstnud rea Protseduur2 k, mis on protseduuri teine nimi.
Kui vajutan nüüd klahvi F8, hüppab see praegusest protseduurist välja ja läheb teise protseduuri juurde.
Kuna me kasutasime sõna ByRef, kandis see ülaltoodud protseduuri muutuja “k” väärtust.
Vajutage kaks korda klahvi F8, et minna tagasi eelmisesse alamprotseduuri. Kui märkate teises protseduuris, olen valemi rakendanud kujul k = k + 10. st “k” väärtus on 50, siis lisatakse sellele veel 10, st kokku 60.
Nüüd töötab kood esimese protseduurina ja selles protseduuris on muutuja “k” väärtus 50. Kuid vajutage klahvi F8 ja näete tulemust sõnumikastis.
Saime tulemuseks 60, selle protseduuri vaikeväärtuse 50 asemel.
Põhjus, miks saime 60, kuna teises protseduuris oleme rakendanud "ByRef", kandis see võrranditulemust (k = k + 10) praegusele protseduurile.
Siin on esimese muutuja “k” väärtus 50 ja teises protseduuris on muutuja “k” väärtus k + 10 ehk 60, mis kantakse esimesse protseduuri.
Esimeses protseduuris oli muutuja “k” algväärtus 50, nii et By Ref muutis algväärtuse 50-lt 60-le, teostades võrrandi k = k + 10, st k = 50 +10 = 60.
Näide 2
Vaadake nüüd veel ühte näidet.
Kood 1:
Alamosa P1 () Hämarda minu number nii kaua kui minu number = 1 kõne muutmine_ByRef (minu number) 'Minu numbrit muudab protseduur Change_ByRef MsgBox "Minu number on nüüd:" & Minu numbri lõpp alam
Kood 2:
Sub Change_ByRef (ByRef NewNumber As Long) UusNumber = 14 End Sub
See töötab täpselt samamoodi nagu eelmine kood.
Esialgu on muutuja “MyNumber” väärtus 1. Seejärel kutsume allpool toodud protseduuri selle nimeks
Helista Change_ByRef (MinuNumber)
Selles protseduuris on muutuja väärtus 14.
Niisiis, kui ta läheb tagasi eelmise protseduuri juurde, määrab see muutujale uue väärtuse 14.