VBA ByRef - एक्सेल VBA बायफ्रेंड फ़ंक्शन का उपयोग करके तर्क पास करें

एक्सेल VBA बायरफ फ़ंक्शन तर्क

VBA में ByRef एक फ़ंक्शन है जिसे संदर्भ के रूप में कहा जाता है जहां हम अपने कोड में किसी भी तर्क के लिए एक संदर्भ प्रदान करते हैं, जब हम कस्टम फ़ंक्शन करते हैं और हम किसी भी वैरिएबल के मूल्य का उपयोग करना चाहते हैं जो फ़ंक्शन द्वारा पहले परिभाषित किया गया है जिसे हम ByRef फ़ंक्शन का उपयोग करते हैं, वाक्य रचना फ़ंक्शन-नाम (डेटा प्रकार के रूप में परिवर्तनीय) के रूप में उपयोग करने के लिए सिंटैक्स सरल है।

Byref का उपयोग करके, हम परिवर्तनशील मूल्य को बदले बिना मूल चर मान को इंगित कर सकते हैं। यह VBA उपप्रोसेसर या VBA फ़ंक्शन के लिए चर मान को सीधे पास करने जैसा है।

VBA बायफर्ग तर्क का उपयोग करके तर्क कैसे पारित करें?

उदाहरण 1

उदाहरण के लिए, नीचे दिए गए VBA कोड को देखें।

कोड 1:

उप प्रक्रिया 1 () डिम k अस इंटेगर k = 50 प्रक्रिया 2 k MsgBox k End Sub

कोड 2:

उप प्रक्रिया 2 (ByRef k As Integer) k = k + 10 End उप

पहली प्रक्रिया में, मैंने चर "k" को पूर्णांक घोषित किया है।

फिर मैंने इस चर का मान 50 के रूप में सौंपा है।

उसके बाद, मैंने एक नई लाइन जोड़ी है

प्रक्रिया 2 k

यह दूसरी प्रक्रिया का नाम है। इस प्रक्रिया में, मैंने कोष्ठक के भीतर VBA में स्ट्रिंग के रूप में चर घोषित किया है, लेकिन मैंने "बायफ़" शब्द का उपयोग किया है।

ByRef k As Integer

यहाँ मैंने चर "k" का मान दिया है

k = k + १०

ठीक है, अब मैं F8 कुंजी दबाकर कोड चरण को चरणबद्ध चलाऊंगा।

F8 कुंजी को दो बार दबाएं और चर "k" के मान को देखने के लिए चर "k" पर एक कर्सर रखें।

चूंकि हमने मान को 50 के रूप में निर्दिष्ट किया है, इसलिए यह मान 50 के रूप में दिखा रहा है। अब इसने प्रोसीजर 2 k को रेखांकित किया है , जो दूसरी प्रक्रिया का नाम है।

अगर मैं F8 कुंजी दबाता हूं, तो यह वर्तमान प्रक्रिया से बाहर हो जाएगा और दूसरी प्रक्रिया में जाएगा।

अब चूंकि हमने ByRef शब्द का इस्तेमाल किया है, इसलिए इसने उपरोक्त प्रक्रिया से चर "k" मान को चलाया।

F8 कुंजी को दो बार दबाएं। यह पिछले उप-प्रक्रिया में वापस जाएगा। यदि आप दूसरी प्रक्रिया में नोटिस करते हैं, तो मैंने सूत्र को k = k + 10. के रूप में लागू किया है, अर्थात, "k" मान 50 है, फिर उस से 10 अधिक अर्थात कुल मिलाकर 60 जोड़ देता है।

अब कोड पहली प्रक्रिया में चल रहा है, और इस प्रक्रिया में, चर "k" मान 50 है। लेकिन F8 कुंजी दबाएं और संदेश बॉक्स में परिणाम देखें।

हमें इस प्रक्रिया में 50 के डिफ़ॉल्ट मूल्य के बजाय 60 के रूप में परिणाम मिला।

कारण हमें 60 मिला, क्योंकि दूसरी प्रक्रिया में, हमने "ByRef" लागू किया है, इसलिए इसने वर्तमान प्रक्रिया में समीकरण परिणाम (k = k + 10) को आगे बढ़ाया।

यहाँ पहला चर "k" मान 50 है, और दूसरी प्रक्रिया चर "k" मान k + 10 अर्थात 60 है, जिसे पहली प्रक्रिया में ले जाया जाता है।

पहली प्रक्रिया में चर "k" का मूल मान 50 था, इसलिए Ref द्वारा समीकरण के = k + 10 अर्थात, k = 50 +10 = 60 को निष्पादित करके मूल मान को 50 से बदलकर 60 कर दिया गया है।

उदाहरण # 2

अब एक और उदाहरण देखें।

कोड 1:

सब P1 () लंबे MyNumber के रूप में मंद MyNumber = 1 कॉल Change_ByRef (MyNumber) 'MyNumber Change_ByRef प्रक्रिया द्वारा परिवर्तित किया गया है MsgBox "मेरा नंबर अब है:" और MyNumber अंतिम उप


कोड 2:

उप Change_ByRef (लंबे समय तक ByRef NewNumber) NewNumber = 14 अंत उप

यह पिछले कोड की तरह ही काम करता है।

प्रारंभ में, चर "MyNumber" का मान 1. है। फिर हम इसके नाम से नीचे की प्रक्रिया कहते हैं

Change_ByRef (MyNumber) पर कॉल करें

उस प्रक्रिया में, चर का मान 14 है।

इसलिए, जब यह पिछली प्रक्रिया में वापस जाता है, तो यह 14 के रूप में चर को नया मान देगा।

दिलचस्प लेख...