VBA ByRef - Iziet argumentu, izmantojot funkciju Excel VBA ByRef

Excel VBA ByRef funkcijas arguments

ByRef VBA ir funkcija, ko sauc par atsauci, kur mēs sniedzam atsauci uz visiem mūsu koda argumentiem, kad veicam pielāgotas funkcijas un vēlamies izmantot jebkura mainīgā vērtību, kas iepriekš definēta pirms funkcijas, kuru izmantojam ByRef funkciju, izmantotā sintakse ir vienkārša kā Funkcijas Funkcijas nosaukums (ByRef mainīgais kā datu tips).

Izmantojot Byref, mēs varam norādīt uz sākotnējo mainīgo vērtību, nemainot mainīgā vērtību. Tas ir tāpat kā mainīgās vērtības nodošana tieši VBA apakšprocedūrai vai funkcijai VBA.

Kā nodot argumentu, izmantojot VBA ByRef argumentu?

1. piemērs

Piemēram, apskatiet zemāk redzamo VBA kodu.

Kods1:

Apakšprocedūra1 () Dim k As Integer k = 50 Procedūra2 k MsgBox k End Sub

Kods2:

Apakšprocedūra2 (ByRef k kā veselais skaitlis) k = k + 10 Beigu apakšgrupa

Pirmajā procedūrā mainīgo “k” esmu deklarējis kā veselu skaitli.

Tad šim mainīgajam esmu piešķīris vērtību 50.

Pēc tam es esmu pievienojis jaunu rindu, ti

Procedūra2 k

Šis ir otrais procedūras nosaukums. Šajā procedūrā es iekavās mainīgo mainīju kā virkni VBA, bet esmu izmantojis vārdu “ByRef”.

ByRef k kā vesels skaitlis

Šeit es piešķiru mainīgā “k” vērtību kā

k = k + 10

Labi, tagad es palaidīšu kodu soli pa solim, nospiežot taustiņu F8.

Nospiediet taustiņu F8 vēl divas reizes un novietojiet kursoru uz mainīgā “k”, lai redzētu mainīgā “k” vērtību.

Tā kā mums ir piešķirta vērtība kā 50, tā parāda vērtību kā 50. Tagad tas ir izcēlis rindiņu Procedūra2 k, kas ir otrais procedūras nosaukums.

Ja es tagad nospiedīšu taustiņu F8, tas izies no pašreizējās procedūras un pāriet uz otro procedūru.

Tā kā mēs esam izmantojuši ByRef vārdu, tam bija mainīgās vērtības “k” no iepriekš minētās procedūras.

Divreiz nospiediet taustiņu F8. Tas atgriezīsies iepriekšējā apakšprocedūrā. Ja pamanāt otrajā procedūrā, es esmu izmantojis formulu kā k = k + 10, ti, “k” vērtība ir 50, tad tai pievieno vēl 10, ti, kopā 60.

Tagad kods darbojas pirmajā procedūrā, un šajā procedūrā mainīgā “k” vērtība ir 50. Bet nospiediet taustiņu F8 un rezultātu redziet ziņojumu lodziņā.

Šajā procedūrā rezultāts bija 60, nevis noklusējuma vērtība 50.

Iemesls, kāpēc mēs saņēmām 60, jo otrajā procedūrā mēs izmantojām “ByRef”, tāpēc tas pašreizējai procedūrai ietvēra vienādojuma rezultātu (k = k + 10).

Šeit pirmā mainīgā “k” vērtība ir 50, bet otrajā procedūrā mainīgā “k” vērtība ir k + 10, ti, 60, kas tiek pārnesta uz pirmo procedūru.

Pirmajā procedūrā mainīgā “k” sākotnējā vērtība bija 50, tāpēc By Ref ir mainījis sākotnējo vērtību no 50 uz 60, izpildot vienādojumu k = k + 10, ti, k = 50 +10 = 60.

2. piemērs

Tagad apskatiet vēl vienu piemēru.

1. kods:

Apakšsadaļa P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'Manu numuru maina procedūra Change_ByRef MsgBox "Mans numurs tagad ir:" & Mans numura beigu apakšsadaļa


2. kods:

Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 Beigas Sub

Tas darbojas tieši tāpat kā iepriekšējais kods.

Sākotnēji mainīgā “MyNumber” vērtība ir 1. Tad mēs saucam šo procedūru ar tā nosaukumu

Zvanīt Change_ByRef (MyNumber)

Šajā procedūrā mainīgā vērtība ir 14.

Tātad, atgriežoties pie iepriekšējās procedūras, tā mainīgajam piešķirs jauno vērtību kā 14.

Interesanti raksti...