VBA ByRef | Ipasa ang Argumento Gamit ang Excel VBA ByRef Function
Ang Excel VBA ByRef Function Argument
ByRef sa VBA ay isang pagpapaandar na tinatawag bilang sa pamamagitan ng sanggunian kung saan nagbibigay kami ng isang sanggunian sa anumang mga argumento sa aming code, kapag gumawa kami ng mga pasadyang pagpapaandar at nais naming gamitin ang halaga ng anumang variable na tinukoy nang mas maaga bago ang pagpapaandar na ginagamit namin ng ByRef function, ang syntax na gagamitin ay simple bilang Function Function-Name (Variable ng ByRef bilang Uri ng Data).
Sa pamamagitan ng paggamit ng Byref maaari nating ituro ang orihinal na variable na halaga nang hindi binabago ang variable na halaga. Ito ay tulad ng pagpasa ng variable na halaga nang direkta sa VBA subprocedure o VBA function.
Paano pumasa sa Argumento gamit ang VBA ByRef Argument?
Maaari mong i-download ang VBA ByRef Excel Template dito - VBA ByRef Excel TemplateHalimbawa # 1
Para sa isang halimbawa tingnan ang sa ibaba VBA code.
Code1:
Sub Pamamaraan1 () Dim k Bilang Integer k = 50 Pamamaraan2 k MsgBox k End Sub
Code2:
Sub Pamamaraan2 (ByRef k Bilang Integer) k = k + 10 Katapusan Sub
Sa unang pamamaraan, idineklara ko ang variable na "k" bilang Integer.
Pagkatapos ay itinalaga ko ang halaga sa variable na ito bilang 50.
Pagkatapos nito ay nagdagdag ako ng isang bagong linya i.e.
Pamamaraan2 k
Ito ang pangalawang pangalan ng pamamaraan. Sa pamamaraang ito, idineklara ko ang variable sa loob ng panaklong bilang String sa VBA ngunit ginamit ko ang salitang "ByRef".
ByRef k Bilang Integer
Dito ko itinalaga ang halaga ng variable na "k" bilang
k = k + 10
Ok, ngayon tatakbo ko ang code nang paunahin sa pamamagitan ng pagpindot sa F8 key.
Pindutin ang F8 key nang dalawang beses pa at maglagay ng isang cursor sa variable na "k" upang makita ang halaga ng variable na "k".
Dahil itinalaga namin ang halaga bilang 50, ipinapakita nito ang halaga bilang 50. Ngayon ay nai-highlight nito ang linya Pamamaraan2 k na kung saan ay ang pangalawang pamamaraan ng pangalan.
Kung pinindot ko ang key na F8 ngayon ay tatalon ito mula sa kasalukuyang pamamaraan at pupunta sa pangalawang pamamaraan.
Ngayon dahil ginamit namin ang salitang ByRef dala nito ang variable na "k" na halaga mula sa nabanggit na pamamaraan.
Pindutin ang F8 key nang dalawang beses babalik ito sa nakaraang subprocedure. Kung napansin mo sa pangalawang pamamaraan na inilapat ko ang pormula bilang k = k + 10. ibig sabihin ang "k" na halaga ay 50 pagkatapos ay nagdaragdag ng 10 pa sa iyon ibig sabihin 60 sa kabuuan.
Ngayon ang code ay tumatakbo sa unang pamamaraan at sa pamamaraang ito variable na "k" na halaga ay 50. Ngunit pindutin ang F8 key at tingnan ang resulta sa isang kahon ng mensahe.
Nakuha namin ang resulta bilang 60 sa halip na ang default na halaga ng 50 sa pamamaraang ito.
Ang dahilan kung bakit nakakuha kami ng 60 dahil sa pangalawang pamamaraan na inilapat namin ang "ByRef" kaya, dinala nito ang resulta ng equation (k = k + 10) sa kasalukuyang pamamaraan.
Narito ang unang variable na "k" na halaga ay 50 at sa pangalawang pamamaraan variable na "k" na halaga ay k + 10 ibig sabihin 60 na dinala sa unang pamamaraan.
Sa unang pamamaraan orihinal na halaga ng variable na "k" ay 50, kaya binago ng Ref ang orihinal na halaga mula 50 hanggang 60 sa pamamagitan ng pagpapatupad ng equation k = k + 10 ibig sabihin k = 50 +10 = 60.
Halimbawa # 2
Ngayon tingnan ang isa pang halimbawa.
Code 1:
Sub P1 () Madilim ang MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'Ang MyNumber ay binago ng pamamaraang Change_ByRef na MsgBox "Ang Aking Numero ay Ngayon:" & MyNumber End Sub
Code 2:
Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub
Gumagawa ito ng eksaktong kapareho ng nakaraang code.
Sa una, ang halaga ng variable na "MyNumber" ay 1. Pagkatapos ay tawagan namin ang pamamaraan sa ibaba sa pamamagitan ng pangalan nito
Tumawag sa Change_ByRef (MyNumber)
Sa pamamaraang iyon, ang halaga ng variable ay 14.
Kaya, kapag bumalik ito sa nakaraang pamamaraan itatalaga ang bagong halaga sa variable bilang 14.