VBA बायवाल - कैसे करें ByVal Function Argument का उपयोग? (उदाहरण)

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

ByVal वीबीए में एक बयान है। ByVal का मतलब By Value से होता है जब प्रक्रिया से कॉल की जाने वाली सबप्रोसेसर चर का मान नई प्रक्रिया से नए मान में रीसेट हो जाता है।

VBA में, जब हम ऐसे फ़ंक्शन के साथ काम करते हैं जिन्हें अलग-अलग फ़ंक्शन में कहा जाता है, तो कुछ निश्चित परिस्थितियां हैं कि जब फ़ंक्शन को बुलाया जा रहा है तो मूल तर्क के लिए मूल्य बदल जाता है; byval कथन प्रक्रिया या कोड को तर्क के लिए मान बदलने पर रोक लगाता है।

मुझे पता है कि स्पष्टीकरण को समझना आसान नहीं है, लेकिन फ़ंक्शन के व्यावहारिक उदाहरणों के साथ, हम वास्तव में बेहतर समझ सकते हैं।

VBA में ByVal Argument का उपयोग कैसे करें?

उदाहरण 1

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

कोड:

सब मैक्रो 1 () डिम k अस इंटेगर k = 50 मैक्रो 2 k MsgBox k End Sub
सब मैक्रो 2 (बायवाल k अस इंटेगर) k = k + 5 एंड सब

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

पहले मैक्रो में, हमने चर "k" को 50 का मान दिया है।

Dim k As Integer k = 50

अगला, हमने पहले मैक्रो से दूसरी मैक्रो प्रक्रिया को बुलाया है।

मैक्रो 2 के

Macro2 में, हमने चर का मान k = k + 5. पर रीसेट कर दिया है। इस मैक्रो में, हमने चर को "k" मान देने के लिए ByVal तर्क का उपयोग किया है।

अब "ByVal" को समझने के लिए, F8 कुंजी दबाकर लाइन द्वारा VBA कोड लाइन चलाएं।

# 1 - पहले F8 कुंजी दबाने पर, यह मैक्रो 1 की पहली पंक्ति को उजागर करेगा।

इस समय पर, "k" चर पर एक कर्सर रखें और इसे चर "k" का मान दिखाना चाहिए।

फिलहाल, "k" का मान शून्य है।

# 2 - F8 कुंजी को एक बार दबाएं, और यह तीसरी लाइन पर जाएगा।

अब भी, "k" का मान अभी भी शून्य है।

# 3 - अब F8 कुंजी दबाएं और k का मान देखें।

चूंकि "k" मान 50 पर सेट है और कोड निष्पादित है और इसलिए मान 50 के रूप में दिखा रहा है।

# 4 - अब, हाइलाइट की गई लाइन "Macro2 k" है, अर्थात, F8 कुंजी दबाकर, यह दूसरी प्रक्रिया, Macro2 पर जाएगी।

# 5 - अब भी, इस प्रक्रिया में चर "k" का मान 50 के रूप में भी दिखाई देता है। लेकिन इस मैक्रो के अंदर, हम चर "k" को k = k + 5 अर्थात 55 के रूप में रीसेट कर रहे हैं। अब 55 दबाएँ। F8 कुंजी दो बार।

जैसा कि आप ऊपर "k" मान 55 देख सकते हैं।

# 6 - F8 कुंजी दबाएं, और यह मैक्रो 1 प्रक्रिया पर वापस आ जाएगा।

जब मैक्रो वापस मूल प्रक्रिया में वापस आ गया, तो Macro1, हमारा चर "k" मान 55 नहीं है, बल्कि इस प्रक्रिया में मूल मान यानी 50 है।

जब आप F8 कुंजी दबाते हैं, तो हम VBA में संदेश बॉक्स में केवल 50 देख सकते हैं।

इसलिए, जैसा कि हमने लेख की शुरुआत में बताया है "ByVal" तर्क मानों को एक प्रक्रिया से दूसरी प्रक्रिया में नहीं ले जाता है, भले ही यह पहले मैक्रो से चर के मूल्य को दूसरे स्थान पर ले जाता है जब तक यह लाइन से सामना करता है " ByVal ”जब यह मूल मैक्रो में वापस आता है तो यह मूल्य को मूल मान को केवल प्रक्रिया में रीसेट करता है।

उदाहरण # 2

अब नीचे दो मैक्रो पर एक नज़र डालें।

कोड:

सब P1 () डिम k अस इंटेगर: k = 10 कॉल P2 (k) MsgBox k End Sub
Sub P2 (ByVal k As Integer) k = 15 End Sub
  • यह पहले उदाहरण के समान है। मैक्रो "P1" में, हमने वेरिएबल "k," को 10 का मान दिया है और उसी मैक्रो "P1" में, हमने वैरिएबल "k " के साथ दूसरा मैक्रो "P2" कहा है।
  • दूसरे मैक्रो "P2" में, हमने ByVal तर्क का उपयोग किया है, और इस बार, चर "k" का मान 15 है।

यह मैक्रो चर "k" के मूल्य को मैक्रो "P1" से दस के रूप में मैक्रो "P2" तक ले जाता है, और इस मैक्रो में, मान 15 पर रीसेट हो जाएगा, लेकिन यह वह क्षण है जो मैक्रो को पहले मैक्रो पर समाप्त करने के लिए आता है "P1" का मान "k" वापस 10 पर है, 15 नहीं।

याद रखने वाली चीज़ें

बायल तर्क मैक्रो को चलाने के बाद भी वैरिएबल मान को प्रभावित नहीं करता है, लेकिन बाय रीफ तर्क के साथ, हम वैरिएबल के मान को एक मैक्रो से दूसरे तक ले जा सकते हैं।

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