VBA ByRef | ఎక్సెల్ VBA బై రిఫ్ ఫంక్షన్ ఉపయోగించి పాస్ ఆర్గ్యుమెంట్
ఎక్సెల్ VBA బై రిఫ్ ఫంక్షన్ ఆర్గ్యుమెంట్
VBA లో ByRef అని పిలువబడే ఫంక్షన్ సూచన ద్వారా ఇక్కడ మేము మా కోడ్లోని ఏదైనా వాదనలకు సూచనను అందిస్తాము, మేము కస్టమ్ ఫంక్షన్లు చేసినప్పుడు మరియు మేము బైరఫ్ ఫంక్షన్ను ఉపయోగించే ఫంక్షన్కు ముందు నిర్వచించబడిన ఏదైనా వేరియబుల్ యొక్క విలువను ఉపయోగించాలనుకుంటున్నాము, ఉపయోగించాల్సిన సింటాక్స్ ఫంక్షన్ ఫంక్షన్-పేరు వలె సులభం (డేటా రకంగా బై రిఫ్ వేరియబుల్).
బైరెఫ్ను ఉపయోగించడం ద్వారా మనం వేరియబుల్ విలువను మార్చకుండా అసలు వేరియబుల్ విలువను సూచించవచ్చు. ఇది వేరియబుల్ విలువను నేరుగా VBA సబ్ప్రొసెజర్ లేదా VBA ఫంక్షన్కు పంపించడం లాంటిది.
VBA ByRef ఆర్గ్యుమెంట్ ఉపయోగించి వాదనను ఎలా పాస్ చేయాలి?
మీరు ఈ VBA ByRef Excel మూసను ఇక్కడ డౌన్లోడ్ చేసుకోవచ్చు - VBA ByRef Excel మూసఉదాహరణ # 1
ఉదాహరణకు దిగువ VBA కోడ్ను చూడండి.
కోడ్ 1:
సబ్ ప్రొసీజర్ 1 () డిమ్ కె యాస్ ఇంటీజర్ k = 50 ప్రొసీజర్ 2 కె MsgBox k ఎండ్ సబ్
కోడ్ 2:
సబ్ ప్రొసీజర్ 2 (బైరేఫ్ కె యాస్ ఇంటీజర్) k = k + 10 ఎండ్ సబ్
మొదటి విధానంలో, నేను వేరియబుల్ “k” ను పూర్ణాంకంగా ప్రకటించాను.
అప్పుడు నేను ఈ వేరియబుల్కు విలువను 50 గా కేటాయించాను.
ఆ తరువాత నేను క్రొత్త పంక్తిని జోడించాను, అనగా.
విధానం 2 క
ఇది రెండవ విధానం పేరు. ఈ విధానంలో, కుండలీకరణాల్లోని వేరియబుల్ను VBA లో స్ట్రింగ్గా ప్రకటించాను కాని నేను “ByRef” అనే పదాన్ని ఉపయోగించాను.
ByRef k పూర్ణాంకం
ఇక్కడ నేను "k" అనే వేరియబుల్ విలువను కేటాయించాను
k = k + 10
సరే, ఇప్పుడు నేను F8 కీని నొక్కడం ద్వారా దశల వారీగా కోడ్ను అమలు చేస్తాను.
వేరియబుల్ “k” విలువను చూడటానికి F8 కీని మరో రెండుసార్లు నొక్కండి మరియు వేరియబుల్ “k” పై కర్సర్ ఉంచండి.
మేము విలువను 50 గా కేటాయించినందున, అది విలువను 50 గా చూపుతోంది. ఇప్పుడు అది పంక్తిని హైలైట్ చేసింది విధానం 2 క ఇది రెండవ విధానం పేరు.
నేను ఇప్పుడు ఎఫ్ 8 కీని నొక్కితే అది ప్రస్తుత విధానం నుండి దూకి రెండవ విధానానికి వెళుతుంది.
ఇప్పుడు మేము బైరఫ్ పదాన్ని ఉపయోగించినప్పటి నుండి ఇది పై విధానం నుండి వేరియబుల్ “k” విలువను కలిగి ఉంది.
F8 కీని రెండుసార్లు నొక్కండి అది మునుపటి ఉపప్రాంతానికి తిరిగి వెళ్తుంది. రెండవ విధానంలో మీరు గమనించినట్లయితే నేను సూత్రాన్ని k = k + 10 గా వర్తింపజేసాను. అనగా “k” విలువ 50 అయితే దానికి 10 ఎక్కువ జతచేస్తుంది, అంటే మొత్తం 60.
ఇప్పుడు కోడ్ మొదటి విధానంలో నడుస్తోంది మరియు ఈ విధానంలో వేరియబుల్ “k” విలువ 50. కానీ F8 కీని నొక్కండి మరియు ఫలితాన్ని సందేశ పెట్టెలో చూడండి.
ఈ విధానంలో 50 యొక్క డిఫాల్ట్ విలువకు బదులుగా 60 ఫలితాన్ని పొందాము.
మనకు 60 రావడానికి కారణం రెండవ విధానంలో మనం “బై రిఫ్” ను వర్తింపజేసాము, కనుక ఇది ప్రస్తుత విధానానికి సమీకరణ ఫలితాన్ని (k = k + 10) తీసుకువెళ్ళింది.
ఇక్కడ మొదటి వేరియబుల్ “k” విలువ 50 మరియు రెండవ విధానంలో వేరియబుల్ “k” విలువ k + 10 అనగా 60 ఇది మొదటి విధానానికి తీసుకువెళుతుంది.
మొదటి విధానంలో “k” అనే వేరియబుల్ యొక్క అసలు విలువ 50, కాబట్టి k = k + 10 అంటే k = 50 +10 = 60 అనే సమీకరణాన్ని అమలు చేయడం ద్వారా అసలు విలువను 50 నుండి 60 కి మార్చారు.
ఉదాహరణ # 2
ఇప్పుడు మరో ఉదాహరణ చూడండి.
కోడ్ 1:
సబ్ పి 1 () డిమ్ మై నంబర్ లాంగ్ మై నంబర్ = 1 కాల్ చేంజ్_బైరేఫ్ (మై నంబర్) 'చేంజ్_బైరేఫ్ విధానం ద్వారా మై నంబర్ మార్చబడింది MsgBox "నా సంఖ్య ఇప్పుడు:" & మై నంబర్ ఎండ్ సబ్
కోడ్ 2:
సబ్ చేంజ్_బైరేఫ్ (బై రిఫ్ న్యూ నంబర్ లాంగ్) న్యూ నంబర్ = 14 ఎండ్ సబ్
ఇది మునుపటి కోడ్ మాదిరిగానే పనిచేస్తుంది.
ప్రారంభంలో, వేరియబుల్ “మై నంబర్” యొక్క విలువ 1. అప్పుడు మేము ఈ క్రింది విధానాన్ని దాని పేరుతో పిలుస్తాము
Change_ByRef (MyNumber) కు కాల్ చేయండి
ఆ విధానంలో, వేరియబుల్ విలువ 14.
కాబట్టి, ఇది మునుపటి విధానానికి తిరిగి వెళ్ళినప్పుడు అది కొత్త విలువను వేరియబుల్కు 14 గా కేటాయిస్తుంది.