VBA ByRef - Edastage argument Exceli VBA funktsiooni ByRef abil

Lang L: none (table-of-contents)

Exceli VBA funktsiooni Argument ByRef

VBA-s ByRef on funktsioon, mida kutsutakse viitena, kus esitame viite kõikidele 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 funktsioon Function-Name (ByRef Variable as Data Type) lihtne.

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?

Näide 1

Näiteks 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 kui String 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 ma vajutan nüüd klahvi F8, hüppab see praegusest protseduurist välja ja läheb teise protseduuri juurde.

Kuna oleme kasutanud sõna ByRef, kandis see ülaltoodud protseduuri muutuja “k” väärtust.

Vajutage kaks korda klahvi F8. See läheb tagasi eelmise alammenetluse juurde. Kui märkate teises protseduuris, olen valemit kasutanud kujul k = k + 10. st “k” väärtus on 50, siis lisatakse sellele veel 10, st kokku 60.

Nüüd töötab kood esimeses protseduuris ja selles protseduuris on muutuja “k” väärtus 50. Kuid vajutage klahvi F8 ja vaadake tulemust teatekastis.

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, seega on Ref muutnud 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 sama mis 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 ta muutujale uue väärtuse 14.

Huvitavad Artiklid...