VBA एक्जिट सब - यदि शर्तों को पूरा नहीं किया जाता है तो VBA सबप्रोडेक्ट से बाहर निकलें

एक्सेल VBA एक्जिट सब प्रक्रिया

एक्ज़िट सब स्टेटमेंट VBA कोड्स की परिभाषित लाइनों की तुलना में पहले उपप्रक्रिया को बाहर निकालता है। हालाँकि, उप-प्रक्रिया से बाहर निकलने के लिए हमें किसी प्रकार के तार्किक परीक्षण को लागू करने की आवश्यकता है।

सरल शब्दों में इसका निर्माण करते हैं।

उप मैक्रोनेम () '…' कुछ कोड यहाँ '… बाहर निकलें उप' नीचे दिए गए कोड की आगे की पंक्तियों को निष्पादित किए बिना उप से बाहर निकलें … 'इस कोड को अनदेखा किया जाएगा' … अंत उप

उदाहरण

उदाहरण 1

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

कोड:

उप Exit_Example1 () डिम k अस लॉन्ग फ़ॉर k = 1 टू 10 सेल्स (k, 1) .Value = k Next k End सब

उपरोक्त कोड कोशिकाओं A1 से A10 में 1 से 10 तक सीरियल नंबर डालेगा।

अब मैं केवल 5 सीरियल नंबर डालना चाहता हूं, और जैसे ही चर "k" का मूल्य 6 हो जाता है, मैं उप से बाहर निकलना चाहता हूं।

मुझे एक्सेल में IF k = 6 तब एक्जिट सब के रूप में तार्किक परीक्षण जोड़ना होगा ।

कोड:

Sub Exit_Example1 () Dim k As Long For k = 1 To 10 if k = 6 उसके बाद Exit Sub 'जैसे ही k value 6 बनती है यह सभी कोड को अनदेखा कर देगा और Cell (k, 1) से बाहर निकल जाएगा ।Value = "Next k" समाप्त हो जाएगा। विषय

अब कोड लाइन को लाइन से चलाएं। कार्यवाही शुरू करने के लिए F8 कुंजी दबाएँ।

अब तक, k मान शून्य है।

K मान को 1 में बदलने के लिए, F8 कुंजी को एक बार दबाएं।

तो k मान 1 है, हमारा कोड चालू रहता है और सेल A1 में 1 डालेगा। इस तरह, जब तक k का मान 6 नहीं हो जाता है तब तक लूप को चलाते रहें।

अब k का मान 6 है, और कोड की लाइन उप-प्रक्रिया से बाहर निकलने के लिए हमारे तार्किक परीक्षण को निष्पादित करने वाली है। अगर मैं F8 कुंजी को एक बार दबाता हूं, तो यह सीधे पूरी उप प्रक्रिया को ही पूरा करेगा।

जैसा कि हम देख सकते हैं, इसने "एक्जिट सब" शब्द पर प्रकाश डाला है F8 कुंजी दबाने पर, यह शब्द "उप सब" पर जाए बिना उपप्रकार से बाहर निकल जाएगा

उदाहरण # 2 - त्रुटि पर उपप्रकार से बाहर निकलें

त्रुटि मान मिलने पर हम उपप्रकार से बाहर निकल सकते हैं। उदाहरण के लिए, नंबर 2 से नंबर 1 को विभाजित करने के नीचे के आंकड़ों पर विचार करें।

नीचे दो संख्याओं का विभाजन प्राप्त करने के लिए कोड है।

कोड:

उप Exit_Example2 () डिम k अस लॉन्ग फ़ॉर k = 2 टू 9 सेल्स (k, 3) ।वैल्यू = सेल्स (k, 1) ।वैल्यू / सेल्स (k, 2)। वैल्यू नेक्स्ट एंड सब उप।

जैसा कि हम जानते हैं, हम किसी भी संख्या को शून्य से विभाजित नहीं कर सकते हैं। इसलिए यदि हम ऐसा करने का प्रयास करते हैं, तो हमें रन टाइम एरर '11' के रूप में त्रुटि मिलेगी: डिवीजन बाय जीरो।

इससे बचने के लिए जैसे ही हम किसी भी त्रुटि का सामना करते हैं, मैं तत्काल प्रभाव से उप-प्रक्रिया से बाहर निकलने के लिए अपने मैक्रो का उल्लेख करूंगा। नीचे दिया गया कोड एक ऐसा मामला है।

कोड:

Sub Exit_Example2 () डिम k जितनी देर तक k = 2 से 9 तक त्रुटि GoTo ErrorHandler Cells (k, 3) .Value = Cell (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub। अंत उप

उपरोक्त उदाहरण में, मैंने "ओन एरर गोटो एररहैंडलर" कथन का उल्लेख किया है। यहाँ शब्द ErrorHandler लेबल है जिसे मैंने असाइन किया है। यदि आप कोड के नीचे देख सकते हैं, तो मैंने ब्रांड का उल्लेख किया है

ErrorHandler: उप से बाहर निकलें

जैसे ही कोड एक त्रुटि का सामना करता है, यह कोड को लेबल पर कूदने के लिए धक्का देगा, और ब्रांड में "एक्जिट सब" स्टेटमेंट है ताकि यह उपप्रक्रम से बाहर निकल जाए।

अब मैं कोड चलाऊंगा; यह तब तक विभाजन की गणना करेगा जब तक कि इसमें कोई त्रुटि न हो।

जैसा कि आप सेल C7 में देख सकते हैं, यह "जीरो द्वारा डिवीजन" के रूप में एक त्रुटि का सामना कर चुका है, इसलिए यह उपप्रक्रम से बाहर निकल गया है। उपप्रक्रिया से बाहर निकलने वाले उपयोगकर्ता को सूचित किए बिना हमेशा एक खतरनाक चीज होती है। त्रुटि के उपयोगकर्ता को सूचित करने के लिए, हम एक छोटा संदेश बॉक्स शामिल कर सकते हैं।

कोड:

Sub Exit_Example2 () डिम के रूप में लंबे समय तक k = 2 से 9 तक त्रुटि GoTo ErrorHandler Cells (k, 3) .Value = Cell (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox "। त्रुटि हुई है और त्रुटि है: "और vbNewLine और Err.Description निकास उप अंत उप

उपर्युक्त कोड त्रुटि संदेश दिखाएगा फिर उपप्रोसेस से बाहर निकलें। कोड चलाते समय, यदि कोई त्रुटि होती है, तो वह नीचे की तरह VBA में संदेश बॉक्स दिखाएगा।

यह उप प्रक्रिया से बाहर निकलने का एक विश्वसनीय तरीका है।

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