एक्सेल में कस्टम फ़ंक्शंस को डिबग करना सीखें

  • इसे साझा करें
Michael Brown

जैसा कि आप पहले से ही जानते हैं कि यूडीएफ कैसे बनाते हैं (और, मुझे आशा है, आपने उन्हें अपने एक्सेल में लागू करने का भी प्रयास किया है), आइए थोड़ा गहराई से देखें और देखें कि आपके उपयोगकर्ता परिभाषित फ़ंक्शन के काम न करने की स्थिति में क्या किया जा सकता है।

कस्टम फ़ंक्शन बनाते समय कुछ समस्याओं को हल करने के लिए, सबसे अधिक संभावना है कि आपको डीबग चलाने की आवश्यकता होगी। तब आप सुनिश्चित हो सकते हैं कि फ़ंक्शन सही ढंग से काम कर रहा है। कि तुम गलती करोगे। कस्टम कार्य आमतौर पर काफी जटिल होते हैं। और वे तुरंत सही ढंग से काम करना शुरू नहीं करते हैं। सूत्र गलत परिणाम या #VALUE! गलती। मानक एक्सेल कार्यों के विपरीत, आपको कोई अन्य संदेश नहीं दिखाई देगा।

क्या कस्टम फ़ंक्शन चरण दर चरण यह जांचने का कोई तरीका है कि इसके प्रत्येक कथन कैसे काम करता है? ज़रूर! इसके लिए डिबगिंग का उपयोग किया जाता है।

मैं आपको अपने कस्टम फ़ंक्शन को डीबग करने के कई तरीके प्रदान करूंगा ताकि आप वह चुन सकें जो आपके लिए काम करता है।

उदाहरण के तौर पर, हम कस्टम फ़ंक्शन का उपयोग करते हैं GetMaxBetween हमारे पिछले लेखों में से एक से जो मानों की निर्दिष्ट श्रेणी में अधिकतम संख्या की गणना करता है:

फ़ंक्शन GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim rngCells vMax = में प्रत्येक संख्या के लिए i इंटीजर रिडीम arrNums(rngCells.Count) के रूप मेंNumRange Select Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End Function

फ़ंक्शन तर्क हैं सेल की श्रेणी जहां संख्याएं लिखी जाती हैं, साथ ही मानों की ऊपरी और निचली सीमा।

MsgBox फ़ंक्शन को महत्वपूर्ण स्थानों पर रखें

गणनाओं के निष्पादन की निगरानी के लिए, आप स्क्रीन पर सबसे महत्वपूर्ण चर के मान सही स्थानों पर। यह पॉप-अप डायलॉग बॉक्स का उपयोग करके किया जा सकता है।

MsgBox एक डायलॉग बॉक्स है जिसका उपयोग आप उपयोगकर्ता को किसी प्रकार का संदेश दिखाने के लिए कर सकते हैं।

MsgBox का सिंटैक्स अन्य वीबीए कार्यों के समान है:

MsgBox(prompt [, बटन] [, शीर्षक] [, हेल्पफाइल, संदर्भ])

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

अन्य सभी तर्क वैकल्पिक हैं।

[ बटन ] - यह निर्धारित करता है कि कौन से बटन और आइकन हैं MsgBox में प्रदर्शित होता है। उदाहरण के लिए, यदि हम vbOkOnly विकल्प का उपयोग करते हैं, तो केवल OK बटन प्रदर्शित होगा। भले ही आप इस तर्क को याद करते हैं, इस बटन का डिफ़ॉल्ट रूप से उपयोग किया जाता है।

[ शीर्षक ] - यहां आप संदेश बॉक्स का शीर्षक निर्दिष्ट कर सकते हैं।

चलिए इससे स्विच करते हैं अभ्यास करने और डिबगिंग शुरू करने के लिए शब्द। प्रदर्शित करने के लिएसंदेश, निम्नलिखित पंक्ति को GetMaxBetween उपयोक्ता-परिभाषित फ़ंक्शन के कोड में अन्य केस ऑपरेटर से पहले जोड़ें:

MsgBox vMax,, "Count -" & i

परिणाम में हमें यह मिलेगा:

फ़ंक्शन GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) RngCells में प्रत्येक संख्या के लिए vMax = NumRange Select Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & i Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End Function

डायलॉग बॉक्स में vMax वेरिएबल का उपयोग करके, हम देखेंगे कि कौन से नंबर चयन के मानदंडों को पूरा करते हैं, इसलिए कि हम उनमें से सबसे बड़े का चयन कर सकते हैं। अभिव्यक्ति के साथ "गणना -" & मैं शीर्षक बार में, हम इंगित करते हैं कि अधिकतम मान निर्धारित करने के लिए हमने पहले से ही कितनी संख्याएँ चुनी हैं। प्रत्येक नए मूल्य के साथ काउंटर बढ़ाया जाएगा।

एक बार जब हमारे पास अपना यूडीएफ सेट हो जाता है, तो हम नीचे दिए गए सूत्र को दिनांक सीमा पर लागू करते हैं:

= GetMaxBetween (A1:A6,10,50)

एंटर बटन के बाद दबाया जाता है, तो आपको नीचे स्क्रीनशॉट में एक संदेश दिखाई देगा:

यह श्रेणी A1: A6 में पहली संख्या है जो मानदंड को पूरा करती है: 10 से अधिक लेकिन कम 50 से अधिक।

ठीक क्लिक करने के बाद, 14 नंबर के साथ एक दूसरा संदेश प्रकट होता है। शेष संख्याएं चयन से मेल नहीं खाती हैंमानदंड। इसलिए, फ़ंक्शन बाहर निकलता है और दो मानों में से सबसे बड़ा 17 लौटाता है।

MsgBox फ़ंक्शन का उपयोग आपके कस्टम फ़ंक्शन में सबसे महत्वपूर्ण स्थानों में किया जा सकता है ताकि यह नियंत्रित किया जा सके कि मान कैसे हैं व्यक्तिगत चर के परिवर्तन। जब आपके पास एक बड़ा फ़ंक्शन और बहुत अधिक संगणना हो तो संदेश बॉक्स बहुत उपयोगी हो सकते हैं। इस मामले में, आपके लिए यह निर्धारित करना आसान होगा कि कोड के किस भाग में त्रुटि होती है।

रोकने के बिंदु निर्धारित करें और चरण दर चरण प्रदर्शन करें

आप के कोड में ब्रेकप्वाइंट जोड़ सकते हैं आपका कार्य जहां कोड निष्पादन बंद हो जाएगा। तो आप चरण दर चरण गणना प्रक्रिया का पालन कर सकते हैं। ऐसा करने पर, आप देख सकते हैं कि वेरिएबल्स के मान कैसे बदलते हैं।

ब्रेकप्वाइंट जोड़ने के लिए, कर्सर को स्टेटमेंट वाली लाइन पर रखें जहाँ आप पॉज़ करना चुनते हैं। फिर राइट-क्लिक करें और डीबग -> ब्रेकपॉइंट टॉगल करें या केवल F9 दबाएं। आप फ़ंक्शन कोड के बाईं ओर वर्टिकल ग्रे क्षेत्र पर वांछित स्थान पर भी क्लिक कर सकते हैं।

एक लाल वृत्त दिखाई देगा, जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं। कोड की पंक्ति जहां परिकलन रोका जाएगा लाल रंग में हाइलाइट किया गया है।

अब, फ़ंक्शन चलने पर VBA संपादक विंडो खोली जाएगी। कर्सर उस बिंदु पर स्थित होगा जहां आप रुके थे।

यदि आप अपने माउस कर्सर को फ़ंक्शन कोड में किसी भी चर पर होवर करते हैं, तो आप उनका वर्तमान देख सकते हैंमान:

गणना जारी रखने के लिए F5 दबाएं।

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

चूंकि फ़ंक्शन का निष्पादन फिर से रुका हुआ है, आप माउस कर्सर का उपयोग करके फ़ंक्शन के सभी चर के वर्तमान मान देख सकते हैं।

F8 का अगला प्रेस हमें एक कदम आगे ले जाएगा . तो आप गणना के अंत तक F8 दबा सकते हैं। या अगले ब्रेकप्वाइंट तक गणना जारी रखने के लिए F5 दबाएं।

यदि कोई त्रुटि होती है, तो कर्सर कोड में उस बिंदु पर रुक जाएगा जहां त्रुटि हुई थी। और आपको एक पॉप-अप एरर मैसेज भी दिखाई देगा। इससे समस्या के कारण का पता लगाना आसान हो जाता है।

आपके द्वारा निर्दिष्ट ब्रेकप्वाइंट तब तक लागू रहेंगे जब तक आप फ़ाइल को बंद नहीं कर देते। जब आप इसे फिर से खोलेंगे, तो आपको उन्हें फिर से सेट करना होगा। सबसे सुविधाजनक तरीका नहीं है, क्या आपको नहीं लगता?

हालांकि, इस समस्या को हल किया जा सकता है। फ़ंक्शन कोड में आवश्यक बिंदुओं पर एक स्टॉप स्टेटमेंट डालें, और आप ब्रेकप्वाइंट का उपयोग करते समय प्रोग्राम के निष्पादन को उसी तरह रोक सकते हैं।

जब VBA स्टॉप स्टेटमेंट का सामना करता है, तो यह प्रोग्राम के निष्पादन को रोक देगा और आपकी कार्रवाई की प्रतीक्षा करेगा। फिर, चरों के मानों की जाँच करेंजारी रखने के लिए F5 दबाएं।

या ऊपर बताए अनुसार चरण-दर-चरण फ़ंक्शन को पूरा करने के लिए F8 दबाएं।

स्टॉप कथन कार्यक्रम का हिस्सा है और इसलिए यह है हटाया नहीं गया, जैसा कि ब्रेकप्वाइंट के मामले में है। जब आप डिबगिंग कर लें, तो इसे स्वयं हटा दें। या इसे एक एकल उद्धरण (') के साथ पहले एक टिप्पणी में बदल दें। फ़ंक्शन कोड सही जगह पर। यह वेरिएबल्स के मूल्यों की जांच के लिए उपयोगी है जो चक्रीय रूप से बदल रहे हैं।

आप नीचे दिए गए स्क्रीनशॉट पर Debug.Print के प्रदर्शन का एक उदाहरण देख सकते हैं।

विवरण Debug.Print i, vMax मानों और उनकी क्रमिक संख्याओं को प्रिंट करता है।

तत्काल विंडो में आपको चयनित श्रेणी से दो संख्याएँ (17 और 14) दिखाई देती हैं, जो सीमाएँ निर्धारित करें और जिनमें से अधिकतम का चयन किया जाएगा। अंक 1 और 2 का अर्थ है कि फ़ंक्शन ने 2 चक्र पूरे कर लिए हैं जिनमें संख्याओं का चयन किया गया था। हम सबसे महत्वपूर्ण वेरिएबल्स के मान देखते हैं, जैसा कि हमने पहले MsgBox के साथ किया था। लेकिन इसने फ़ंक्शन को नहीं रोका।

एक प्रक्रिया से एक फ़ंक्शन को कॉल करें

आप एक उपयोगकर्ता परिभाषित फ़ंक्शन को वर्कशीट में एक सेल से नहीं, बल्कि एक प्रक्रिया से कॉल कर सकते हैं। इस मामले में, सभी त्रुटियां विज़ुअल बेसिक संपादक विंडो में दिखाई देंगी।कार्यविधि:

सब टेस्ट() Dim x x = GetMaxBetween(Range ("A1:A6"), 10, 50) MsgBox(x) End Sub

कर्सर को कोड में कहीं भी रखें और F5 दबाएं। यदि फ़ंक्शन में कोई त्रुटि नहीं है, तो आपको गणना परिणाम के साथ एक पॉप-अप विंडो दिखाई देगी।

त्रुटि के मामले में, आपको VBA संपादक में संबंधित संदेश दिखाई देगा। गणना बंद कर दी जाएगी और कोड की पंक्ति जिसमें त्रुटि हुई है, पीले रंग में हाइलाइट की जाएगी। आप आसानी से पहचान सकते हैं कि गड़बड़ी कहां और क्यों हुई.

बस इतना ही. अब आपने अपना ऐड-इन बना लिया है, इसे एक्सेल में जोड़ दिया है और आप इसमें UDF का उपयोग कर सकते हैं। यदि आप अधिक UDFs का उपयोग करना चाहते हैं, तो बस VBA संपादक में ऐड-इन मॉड्यूल में कोड लिखें और इसे सहेजें।

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

माइकल ब्राउन सॉफ्टवेयर टूल्स का उपयोग करके जटिल प्रक्रियाओं को सरल बनाने के जुनून के साथ एक समर्पित प्रौद्योगिकी उत्साही है। टेक उद्योग में एक दशक से अधिक के अनुभव के साथ, उन्होंने माइक्रोसॉफ्ट एक्सेल और आउटलुक के साथ-साथ गूगल शीट्स और डॉक्स में अपने कौशल को निखारा है। माइकल का ब्लॉग अपने ज्ञान और विशेषज्ञता को दूसरों के साथ साझा करने के लिए समर्पित है, उत्पादकता और दक्षता में सुधार के लिए आसान-से-अनुसरण युक्तियाँ और ट्यूटोरियल प्रदान करता है। चाहे आप एक अनुभवी पेशेवर हों या नौसिखिए, माइकल का ब्लॉग इन आवश्यक सॉफ़्टवेयर उपकरणों से अधिकाधिक लाभ उठाने के लिए मूल्यवान अंतर्दृष्टि और व्यावहारिक सलाह प्रदान करता है।