/ / "Excel VBA ByRef" ir "ByVal"

"Excel VBA ByRef" ir "ByVal"

Jūs galite perduoti argumentus procedūroms (funkcijai ar pogrupiui) pagal nuorodą arba pagal vertę. Pagal nutylėjimą Excel VBA pateikia argumentus atskirai. Kaip visada, mes panaudosime lengvą pavyzdį, kad dalykai būtų aiškesni.

Įdėkite komandų mygtuką į savo darbalapį ir pridėkite šias kodo eilutes:

Dim x As Integer
x = 10

MsgBox Triple(x)
MsgBox x

Kodas vadina funkciją Tris kartus. Tai yra antrojo "MsgBox" rezultatas, į kurį domiame. Funkcijos turi būti įtrauktos į modulį.

1. Atidarykite Visual Basic Editor ir spustelėkite Insert, Module.

2. Įtraukite šias kodo eilutes:

Function Triple(ByRef x As Integer) As Integer

x = x * 3
Triple = x

End Function

Rezultatas spustelėjus komandą mygtuką ant lapo:

ByRef rezultatas

ByRef rezultatas

3. Pakeiskite ByRef su ByVal.

Function Triple(ByVal x As Integer) As Integer

x = x * 3
Triple = x

End Function

Rezultatas spustelėjus komandą mygtuką ant lapo:

ByVal rezultatas

ByVal rezultatas

Paaiškinimas: Suteikiant argumentus nuoroda yra nuoroda į pradinę vertę. Funkcijoje pakeista x vertė (pradinė vertė). Todėl antroji "MsgBox" rodo 30 reikšmę. Suteikiant argumentus pagal vertę, mes siunčiame kopiją į funkciją. Pradinė vertė nepakeista. Todėl antroji "MsgBox" rodo 10 vertės (pradinės vertės) reikšmę.

Taip pat perskaitykite: