VBA त्रुटि विवरण पर - शीर्ष 3 तरीके त्रुटियों को संभालने के लिए

एक्सेल वीबीए ऑन एरर स्टेटमेंट

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

कोड में त्रुटि का पता लगाना आपको VBA कोडिंग में एक समर्थक बनाता है। आप कोड को 100% कुशल नहीं बना सकते। यहां तक ​​कि अगर आप अपने कोड एक या किसी अन्य तरीके के बारे में आश्वस्त हैं, तो यह एक त्रुटि हो सकती है।

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

एक त्रुटि क्या है?

एक त्रुटि कुछ भी नहीं है, लेकिन कार्यक्षमता या गलत कोड के कारण कोड की एक पंक्ति निष्पादित नहीं की जा सकती है। इसलिए त्रुटि का अनुमान लगाने और उसे संभालने की कोशिश करें।

उदाहरण के लिए, यदि आप उस शीट को हटाने की कोशिश करते हैं जो वहां नहीं है, तो जाहिर है कि हम उस कोड को निष्पादित नहीं कर सकते हैं।

एक त्रुटि तीन प्रकार की है एक अघोषित चर के कारण संकलित त्रुटि है। दूसरा एक कोडर द्वारा गलत प्रविष्टियों के कारण डेटा प्रविष्टि त्रुटि है, और तीसरा एक VBA के कारण समय त्रुटि चलाया जाता है जो कोड की रेखा को पहचान नहीं सकता है। किसी वर्कशीट या वर्कबुक पर पहुंचने या काम करने की कोशिश करने के लिए, जो वहां नहीं है।

लेकिन हमारे पास इन सभी प्रकार की त्रुटियों को संभालने के लिए VBA में एक बयान है, अर्थात, "त्रुटि पर" कथन।

त्रुटि विवरण के प्रकार

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

एरर स्टेटमेंट में तीन तरह के स्टेटमेंट होते हैं।

  1. GoTo 0 का मतलब है कि जब भी रन टाइम एरर होता है, एक्सेल या वीबीए को एरर मैसेज बॉक्स प्रदर्शित करना चाहिए जिसमें कहा गया है कि किस तरह की एरर आई है। जैसे ही VBA कोड निष्पादित करता है, यह कोड के उस विशेष ब्लॉक में सभी त्रुटि हैंडलर को निष्क्रिय कर देता है।
  2. रिज्यूमे नेक्स्ट का मतलब है कि जब भी त्रुटि होती है, तो यह स्टेटमेंट एक्सेल को उस त्रुटि को नजरअंदाज करने का निर्देश देता है और किसी भी त्रुटि संदेश को प्रदर्शित किए बिना कोड की अगली पंक्ति को फिर से शुरू (आगे फिर से शुरू) करने के लिए प्रेरित करता है। इसका मतलब यह नहीं है कि यह त्रुटि को ठीक करेगा; बल्कि, यह सिर्फ त्रुटि को नजरअंदाज करता है।
  3. GoTo (लेबल) का अर्थ है कि जब भी VBA किसी त्रुटि का सामना करता है, तो निर्दिष्ट लेबल पर जाएं। यह कोड को कोडर द्वारा प्रदान की गई विशिष्ट लाइन पर जाने के लिए बनाता है।

शीर्ष 3 तरीके VBA में त्रुटियों को संभालने के लिए

# 1 - त्रुटि फिर से शुरू पर

मान लें कि आप 20 के मान को 0 से विभाजित कर रहे हैं, और आपने इसे विभाजन का परिणाम निर्दिष्ट करने के लिए चर घोषित किया है।

कोड:

उप OnError_Example1 () मंद i यथा पूर्णांक i = 20/0 अंत उप

यदि आप इस कोड को चलाते हैं, तो यह नीचे दी गई त्रुटि को फेंक देगा।

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

अब मैं कोड में एक और पंक्ति जोड़ूंगा।

कोड:

उप OnError_Example1 () मंद i योजक के रूप में, j पूर्णांक के रूप में i = 20/0 j = 20/2 उप उप

अब मैं शीर्ष पर अगले में फिर से शुरू होने वाले बयान को जोड़ूंगा।

कोड:

उप OnError_Example1 () मंद i योजक के रूप में, j के रूप में पूर्णांक पर त्रुटि पुनः आरंभ करें i = 20/0 j = 20/2 समाप्त उप

अब, अगर मैं इस कोड को निष्पादित करता हूं, तो यह मुझे कोई त्रुटि संदेश नहीं देगा; बल्कि, यह कोड की अगली पंक्ति को निष्पादित करेगा, अर्थात, j = 20/2।

# 2 - त्रुटि GoTo लेबल पर

मैंने तीन चर घोषित किए हैं।

कोड:

सब OnError_Example1 () मंद आई अस इंटेगर, जे अस इंटेगर, के अस इंटेगर

इन तीनों चर के लिए, मैं एक विभाजन गणना बताऊंगा।

कोड:

उप OnError_Example1 () डिम आई अस इंटेगर, जे अस इंटेगर, के अस इंटेगर आई = २० / ० जे = २० / २ के = १० / ५

इन तीनों गणनाओं का परिणाम संदेश बॉक्स में दिखाया जाएगा।

कोड:

उप OnError_Example1 () डिम आई ऐज इंटेगर, जे अस इंटेगर, के अस इंटेगर आई = २० / ० जे = २० / २ के = १० / ५ मिसगबॉक्स "I का मान है" और i & vbewewLine & "j का मान है "& j & _ vbNewLine और" k का मान है "और k & vbNewLine समाप्ति उप

अब मैं इस कोड को निष्पादित करने का प्रयास करूंगा क्योंकि "I" की गणना उचित नहीं है। हम रन टाइम एरर 11 प्राप्त करेंगे।

अब मैं "आगे फिर से शुरू करें" स्टेटमेंट को जोड़ूंगा।

कोड:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20 / 0 j = 20 / 2 k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub

If I execute this, it will skip the “I” calculation and execute the remaining two calculations, and the result is as follows.

Now instead of “On Error Resume Next,” I will add “On Error GoTo KCalculation.”

Code:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20 / 0 j = 20 / 2 KCalculation: k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub
नोट: यहाँ, "KCalacle" लेबल नाम है जो मैंने दिया था; आप बिना किसी स्थान के अपना लेबल नाम दे सकते हैं।

अब, यदि मैं कोड की इस पंक्ति को निष्पादित करता हूं, तो यह अगली पंक्ति पर नहीं जाएगी। बल्कि यह मेरे द्वारा दर्ज किए गए लेबल नाम पर कूद जाएगा, अर्थात, "KCalcualtion।" यहाँ यह "I" द्वारा दी गई त्रुटि को नजरअंदाज कर देगा और साथ ही, यह "j" गणना को अंजाम नहीं देगा, लेकिन सीधे, यह "KCalcualtion" को कूदता है।

# 3 - VBA में प्रिंट एरर नंबर

कोड के अंत में, हम एक अलग संदेश बॉक्स में त्रुटि संख्या भी प्रिंट कर सकते हैं। कोड की निम्न पंक्ति यह काम करेगी।

कोड:

Err.Number

अब मैं इस कोड को चलाऊंगा पहला संदेश बॉक्स गणना परिणाम दिखाएगा।

ओके पर क्लिक करें। यह एरर नंबर दिखाने के लिए एक और मैसेज बॉक्स दिखाएगा।

हम 11 जाते हैं; नतीजतन, यानी, जीरो द्वारा डिवीजन।

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

कोड:

त्रुटि

यह इस तरह से विवरण दिखाएगा।

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

  • कोड के अंत में "ऑन एरर रिज्यूमे नेक्स्ट" दर्ज करने के बाद, स्टेटमेंट "एरर गेट्टो 0." जोड़ना न भूलें।
  • लेबल का नाम दोनों स्थानों पर समान होना चाहिए।
  • लेबल नामों को पहले से अच्छी तरह से परिभाषित नहीं किया जाना चाहिए।
  • अंत में, हमेशा यह देखें कि अलग संदेश बॉक्स के माध्यम से क्या त्रुटि हुई थी।

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