VBA ऑन एरर रिज्यूमे को स्टेटमेंट के उपयोग से त्रुटियों को कैसे अनदेखा करें?

एक्सेल VBA पर त्रुटि फिर से शुरू

VBA ऑन एरर रिज्यूमे नेक्स्ट एक एरर हैंडलर स्टेटमेंट है। यदि कोड चलाते समय त्रुटि होती है, तो त्रुटि संदेश को अनदेखा करके कोड की अगली पंक्ति को फिर से शुरू करने के लिए त्रुटि दिखाने के बजाय आप इस कथन का उपयोग कर सकते हैं।

एक्सेल VBA में नियमित रूप से कोड लिखने वाले जानते हैं कि वे कुशल कोड लिखने के बाद भी त्रुटियां प्राप्त कर सकते हैं, लेकिन वे उस त्रुटि को अनदेखा करना चाहते हैं और कोड की अगली पंक्तियों के साथ चलते रहते हैं। त्रुटि संदेश प्राप्त करने का एक विशिष्ट उदाहरण तब होता है जब VLOOKUP कार्यपत्रक फ़ंक्शन तालिका सरणी से लुकअप मान नहीं पाता है। यह # एन / ए त्रुटि वापस नहीं करेगा; बल्कि, यह त्रुटि फेंक देगा। "वर्कशीट फ़ंक्शन क्लास की VLOOKUP संपत्ति प्राप्त करने में असमर्थ"।

अगर आपको नहीं पता कि हमें यह त्रुटि क्यों हो रही है, तो बग को ठीक करना बहुत मुश्किल है। VBA में, हमारे पास " ऑन एरर रिज्यूमे नेक्स्ट " नाम का एक फीचर है ।

VBA में एरर रिज्यूमे आगे क्या करता है?

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

VBA ऑन एरर रिज्यूमे नेक्स्ट स्टेटमेंट का उपयोग करके, हम एरर को अनदेखा कर सकते हैं और कोड की अगली लाइन फिर से शुरू कर सकते हैं।

उदाहरण 1

मान लें कि आपके पास कई वर्कशीट हैं, और आप उनमें से कुछ को VBA प्रोजेक्ट के हिस्से के रूप में छिपा रहे हैं। उदाहरण के लिए, मेरे कार्यपत्रक में नीचे की वर्कशीट हैं।

मैंने "सेल्स एंड" प्रॉफ़िट "शीट्स को छिपाने के लिए कोड लिखे हैं, और नीचे कोड है।

कोड:

उप On_Error () कार्यपत्रक ("बिक्री")। दृश्यमान = xlVeryHidden कार्यपत्रक ("लाभ 2019")। दृश्यमान = xlVeryHidden कार्यपत्रक ("लाभ")।

अब मैं F8 कुंजी का उपयोग करके लाइन द्वारा कोड लाइन चलाना शुरू करूंगा ।

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

अब F8 कुंजी को एक बार दबाएं और देखें कि क्या होता है।

हमें "सीमा से बाहर की सदस्यता" त्रुटि मिली है क्योंकि कोड की वर्तमान रेखा नीचे कहती है।

वर्कशीट ("लाभ 2019")। दृश्यमान = xlVeryHidden

यह " प्रॉफिट 2019 " नामक वर्कशीट को छिपाने की कोशिश कर रहा है , लेकिन "प्रॉफिट 2019" के नाम से कोई वर्कशीट नहीं है।

इन मामलों में, यदि कार्यपुस्तिका में कार्यपत्रक मौजूद नहीं है, तो हमें त्रुटि को अनदेखा करने की आवश्यकता है और "सब्सक्रिप्शन आउट ऑफ़ रेंज" त्रुटि को अनदेखा करके कोड को चलाना जारी रखना चाहिए।

कोड में अगली पंक्ति कहती है

वर्कशीट ("लाभ")। दृश्यमान = xlVeryHidden

यह कार्यपुस्तिका इस कार्यपुस्तिका में मौजूद है, इसलिए त्रुटि को अनदेखा किए बिना, हम इस कोड की पंक्ति में नहीं जा सकते।

इस त्रुटि को नजरअंदाज करने के लिए, हमें "अगला त्रुटि पुनः आरंभ करें" कथन जोड़ने की आवश्यकता है।

कोड:

उप On_Error () त्रुटि को फिर से शुरू करें अगला वर्कशीट ("बिक्री")। दृश्यमान = xlVeryHidden कार्यपत्रक ("लाभ 2019")। दृश्यमान = xlVeryHidden कार्यपत्रक ("लाभ")। दृश्यमान = xlVeryHidden अंत उप-दृश्य।

जैसा कि आप ऊपर देख सकते हैं, मैंने किसी भी लाइन के शुरू होने से पहले कोड के शीर्ष पर स्टेटमेंट जोड़ा है। अब कोड चलाएँ और देखें कि क्या होता है।

अब मैं उस पंक्ति में हूं जिसे पहले त्रुटि दी गई थी, F8 कुंजी दबाएं, और देखें कि क्या होता है।

मैंने बिना किसी त्रुटि के शीर्ष पंक्ति की छलांग लगाई है क्योंकि हमने शीर्ष पर जो बयान जोड़ा है, वह है, "ऑन एरर रिज्यूमे नेक्स्ट" वीबीए स्टेटमेंट।

उदाहरण # 2

अब हम देखेंगे कि इस कथन का एक और उदाहरण के साथ कैसे उपयोग किया जाए। इस उदाहरण के लिए नीचे दी गई डेटा संरचना को देखें।

हमारे पास पहली तालिका के ऊपर दो तालिकाएँ हैं जिनमें दूसरी तालिका में Emp नाम और उनके वेतन का विवरण है, और हमारे पास केवल Emp Name है, इसलिए VLOOKUP का उपयोग करके, हमें बाईं ओर तालिका से वेतन विवरण प्राप्त करना होगा।

नीचे वह कोड है जिसे मैंने विवरण लाने के लिए लिखा था।

कोड:

उप On_Error1 () डिम k as लॉन्ग फॉर k = 2 टू 8 सेल्स (k, 6) ।वैल्यू = WorksheetFunction.VLookup (सेल्स (k, 5), रेंज ("A: B"), 2, 0) Next k End विषय

अब कोड लाइन को लाइन से चलाएं और देखें कि क्या होता है।

पहला सेल कोड चलाने पर, हमें पहले कर्मचारी के लिए परिणाम मिला है। दूसरे कर्मचारी के लिए भी यही दोहराएं।

इस बार हमें त्रुटि संदेश मिला है। आइए तालिका में दूसरे कर्मचारी का नाम देखें।

The second employee name is “Gayathri,” but this name doesn’t not exists in the first table, so the VBA VLOOKUP function doesn’t return “#N/A” error when the VLOOKUP doesn’t find the lookup value from the table; rather, it gives the above error message.

Our aim is if the employee name doesn’t find in the table, then we need an empty cell for that employee and ignore the error and give results for the remaining names.

We need to add the “On Error Resume Next” statement inside the loop.

Code:

Sub On_Error1() Dim k As Long For k = 2 To 8 On Error Resume Next Cells(k, 6).Value = WorksheetFunction.VLookup(Cells(k, 5), Range("A:B"), 2, 0) Next k End Sub

Now run the code and see the result.

दो कर्मचारी नाम, " गायत्री और करणवीर " , सूची में नहीं हैं, इसलिए उन पंक्ति कोड में एक त्रुटि आई होगी क्योंकि हमने " ऑन रिज्यूमे रिज्यूमे नेक्स्ट " का एक त्रुटि हैंडलर स्टेटमेंट जोड़ा है, इसने उस कोड की उपेक्षा की है और फिर से शुरू किया है अगले कर्मचारी के लिए।

यहां याद रखने योग्य बातें

  • जब हम ज्ञात त्रुटि को अनदेखा करने की आवश्यकता होती है, तो "त्रुटि फिर से शुरू करें अगला" त्रुटि हैंडलर कथन है।
  • यदि आप केवल कोड के एक विशिष्ट सेट के लिए त्रुटि संदेश को अनदेखा करना चाहते हैं, तो " त्रुटि गेटो 0 " कथन को जोड़कर त्रुटि फिर से शुरू होने वाले बयान को बंद करें ।

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