Kāda ir atšķirība starp ByRef un ByVal argumentiem? - VBA intervijas jautājums

Satura rādītājs:

Anonim

Šis ir viens no visbiežāk uzdotajiem jautājumiem VBA intervijās. Šajā rakstā mēs uzzināsim, kāda ir atšķirība starp ByVal un ByRef argumentiem Excel VBA.

Definīcijas:

ByRef arguments: Tā ir burtiska atsauces forma. Kad arguments tiek nodots kā ByRef arguments citai apakšgrupai vai funkcijai, tiek nosūtīta faktiskā mainīgā atsauce. Visas izmaiņas, kas veiktas mainīgā kopijā, tiks atspoguļotas sākotnējā argumentā.
Mēs varam teikt, ka vērtības vietā vērtības atrašanās vieta tiek nosūtīta funkcijai, izmantojot funkciju ByRef.
Šis ir noklusējuma arguments VBA. Mums nav jāraksta ByRef pirms strīda.
Sintakse:

Sub x (a kā variants)

‘Vai

Apakš x (ByRef a kā variants)

ByVal arguments: Tā ir burtiska īsa forma pēc vērtības. Ja arguments tiek nodots kā ByVal arguments citai apakšfunkcijai vai funkcijai, tiek nosūtīta tikai argumenta vērtība. Sākotnējais arguments tiek atstāts neskarts. Visas izmaiņas, kas veiktas ārvalstu funkcijās vai apakšnodaļās, netiks atspoguļotas sākotnējā argumentā.
Lai deklarētu argumentu kā ByVal, pirms argumenta jāizmanto atslēgvārds ByVal.
Sintakse:
Sub x (ByVal a kā variants)
Tagad mēs zinām definīcijas. Apskatīsim piemēru un tiksim galā.

ByRef piemērs

Šeit ir vienkārša programma.

Apakš X (ByRef kā variants) a = 20 atkļūdošana. Izdrukāt "a =" & a apakšpozīcijas X vērtībā Beigu apakšdaļa Y () a = 10 Zvanīt X (a) Atkļūdot. Izdrukāt "apakšpozīcijas Y vērtībā a =" & a Beigt apakš 

Tātad, šeit mums ir divas apakšprogrammas. Pirmais apakšpunkts ir X, kas uzskata argumenta variantu par ByRef.
(Varat izlaist atslēgvārdu ByRef. Tas ir noklusējums.)
Tālāk tiek iestatīta vērtība a = 20 beigās pēc tam izdrukā a vērtību.

Sub Y ir galvenā apakšprogramma, ko sauc par apakšprogrammu X. Tas nosaka vērtību a = 10 tad izsauc apakšprogrammu X un izieta kā argumentu. Pēc tam tiek izdrukāta vērtība a Y.

Tagad, palaižot apakšvienību Y, šī ir izvade.
apakšpunktā X vērtība a = 20

apakšpunktā Y vērtība a = 20

Secinājums: sākotnējā a vērtība tiek mainīta ar apakšpunktu X un abām apakšgrupām ir iestatīta uz 20.
jūs varat redzēt, ka, darbojoties apakšam Y, sākotnējā a vērtība bija 10. Y izsauc X (a). X nosaka vērtību a = 20. Tas izdrukā “apakš X vērtībā a = 20”. Vadība atgriežas pie y un izdrukā apakšvirsmas Y vērtību a = 20.
Tas ir ByRef argumenta efekts.

ByVal piemērs:

Šis ir ByVal piemērs

Sub X (ByVal a kā variants) a = 20 atkļūdošana. Izdrukāt "a =" & a apakšpozīcijas X vērtībā Beigu apakšdaļa Y () a = 10 Zvanīt X (a) Atkļūdot. Izdrukāt "apakšpozīcijas Y vērtībā a =" & a Beigt apakš

Abi piemēri ir vienādi ar vienīgo atšķirību starp argumentiem. Šeit X argumenti tiek deklarēti kā ByVal. Šoreiz palaižot Y apakšprogrammu, iznākums ir šāds:

apakšpunktā X vērtība a = 20
apakšpunktā Y vērtība a = 10


Secinājums: Oriģinālā a vērtību NEMAINA apakšpunkts X. X ir 20 un Y - 10.

Kad Y izsauc X ar a, tas nosūta tikai a vērtību, nevis a adresi. Tādējādi visas izmaiņas, kas veiktas a, netiek atspoguļotas sākotnējā mainīgajā.

Pārbaudei, ja drukas vērtība ir a X, pirms iestatāt to uz 20, tas drukās 10. Tā kā 10 tiek pārsūtīts uz a X, izmantojot byVal. Izmantojot jūsu nosūtīto ByRef a no Y uz a no X.

Tas ir vienkāršs jautājums, taču daudzi no mums to sajauc, vba intervijas jautājumā. Iemesls ir tas, ka mēs to daudz neizmantojam. Lielāko daļu laika mēs kopējam vērtību dažādos mainīgajos.

Tātad, jā, puiši, šī ir atšķirība starp bw ByRef un ByVal argumentiem Excel VBA. Ļaujiet man zināt, ja jums ir šaubas par šo tēmu vai kādu citu VBA vai Excel tēmu. Komentāru sadaļa ir jūsu.

Pievienojiet un saglabājiet jaunu darbgrāmatu, izmantojot VBA programmā Microsoft Excel 2016

Parādiet ziņojumu Excel VBA statusa joslā

Izslēdziet brīdinājuma ziņojumus, izmantojot VBA programmā Microsoft Excel 2016

Populāri raksti:

Funkcija VLOOKUP programmā Excel

COUNTIF programmā Excel 2016

Kā lietot SUMIF funkciju programmā Excel