Excel मध्ये कस्टम फंक्शन्स डीबग कसे करायचे ते शिका

  • ह्याचा प्रसार करा
Michael Brown

तुम्हाला UDF कसे तयार करायचे हे आधीच माहित आहे (आणि, मला आशा आहे, तुम्ही ते तुमच्या Excel मध्ये लागू करण्याचा प्रयत्न केला असेल), चला थोडे खोलवर जाऊन पाहू आणि तुमचे वापरकर्ता परिभाषित कार्य कार्य करत नसल्यास काय करता येईल ते पाहू.

सानुकूल कार्य तयार करताना काही समस्यांचे निराकरण करण्यासाठी, तुम्हाला बहुधा डीबग चालवावा लागेल. मग तुम्ही खात्री बाळगू शकता की फंक्शन योग्यरित्या काम करत आहे.

आम्ही खालील डीबगिंग तंत्रांचा शोध घेऊ:

    जेव्हा तुम्ही सानुकूल फंक्शन तयार करता, तेव्हा नेहमीच एक शक्यता असते की तुम्ही चूक कराल. सानुकूल कार्ये सहसा खूप जटिल असतात. आणि ते नेहमीच योग्यरित्या कार्य करण्यास प्रारंभ करत नाहीत. सूत्र कदाचित चुकीचा परिणाम किंवा #VALUE! त्रुटी मानक एक्सेल फंक्शन्सच्या विपरीत, तुम्हाला इतर कोणतेही संदेश दिसणार नाहीत.

    त्यांचे प्रत्येक विधान कसे कार्य करते हे तपासण्यासाठी सानुकूल फंक्शन चरण-दर-चरण जाण्याचा मार्ग आहे का? नक्की! यासाठी डीबगिंगचा वापर केला जातो.

    मी तुम्हाला तुमचे कस्टम फंक्शन डीबग करण्याचे अनेक मार्ग देऊ करेन जेणे करून तुम्ही तुमच्यासाठी उपयुक्त असलेले एक निवडू शकाल.

    उदाहरणार्थ, आम्ही कस्टम फंक्शन वापरतो GetMaxBetween आमच्या मागील लेखांपैकी एका लेखातून जे निर्दिष्ट मूल्यांच्या श्रेणीतील कमाल संख्येची गणना करते:

    फंक्शन GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange as Range Dim vMax Dim arrNums() मंद i rngCells vMax = मधील प्रत्येक संख्या श्रेणीसाठी पूर्णांक ReDim arrNums(rngCells.Count) म्हणूनNumRange सिलेक्ट केस vMax केस MinNum + 0.01 ते MaxNum - 0.01 arrNums(i) = vMax i = i + 1 केस अन्यथा GetMaxBetween = 0 End निवडा पुढील NumRange GetMaxBetween = WorksheetFunction.Max(arrNums> फंक्शन्स आहेत. सेलची श्रेणी जेथे संख्या लिहिली जाते, तसेच मूल्यांची वरची आणि खालची मर्यादा.

    MsgBox फंक्शन महत्त्वाच्या ठिकाणी ठेवा

    गणनेच्या अंमलबजावणीचे निरीक्षण करण्यासाठी, तुम्ही प्रदर्शित करू शकता स्क्रीनवरील सर्वात महत्त्वाच्या व्हेरिएबल्सची मूल्ये योग्य ठिकाणी. हे पॉप-अप डायलॉग बॉक्स वापरून करता येते.

    MsgBox हा एक डायलॉग बॉक्स आहे ज्याचा वापर तुम्ही वापरकर्त्याला काही प्रकारचे संदेश दाखवण्यासाठी करू शकता.

    MsgBox चे वाक्यरचना इतर VBA फंक्शन्स प्रमाणेच आहे:

    MsgBox(prompt [, buttons] [, title] [, helpfile, context])

    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 Integer ReDim arrNums(rngCells.Count) rngCells vMax = NumRange मधील प्रत्येक NumRange साठी केस vMax केस MinNum + 0.01 ते MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax, "गणना -" & i Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) एंड फंक्शन

    संवाद बॉक्समधील vMax व्हेरिएबल वापरून, निवडीसाठी कोणते संख्या निकष पूर्ण करतात ते आपण पाहू. की आपण त्यापैकी सर्वात मोठे निवडू शकतो. "गणना -" या अभिव्यक्तीसह & मी शीर्षक पट्टीमध्ये, आम्ही सूचित करतो की आम्ही कमाल मूल्य निर्धारित करण्यासाठी किती संख्या आधीच निवडल्या आहेत. प्रत्येक नवीन मूल्यासह काउंटर वाढवले ​​जाईल.

    आम्ही आमचा UDF सेट केल्यावर, आम्ही खालील सूत्र तारीख श्रेणीवर लागू करतो:

    = GetMaxBetween (A1:A6,10,50)

    एंटर बटणानंतर दाबल्यास, तुम्हाला खालील स्क्रीनशॉट प्रमाणे संदेश दिसेल:

    हा श्रेणी A1: A6 मधील पहिला क्रमांक आहे जो निकष पूर्ण करतो: 10 पेक्षा जास्त परंतु कमी 50 पेक्षा.

    तुम्ही ओके क्लिक केल्यानंतर, 14 क्रमांकासह दुसरा संदेश दिसेल. उर्वरित संख्या निवडीशी जुळत नाहीत.निकष त्यामुळे, फंक्शन बाहेर पडते आणि दोन व्हॅल्यूजपैकी सर्वात मोठे रिटर्न देते, 17.

    MsgBox फंक्शन तुमच्या कस्टम फंक्शनमधील सर्वात महत्त्वाच्या ठिकाणी व्हॅल्यू कसे नियंत्रित करण्यासाठी वापरले जाऊ शकते. वैयक्तिक व्हेरिएबल्स बदलतात. जेव्हा तुमच्याकडे मोठे कार्य असते आणि भरपूर मोजणी असते तेव्हा संदेश बॉक्स खूप उपयुक्त ठरू शकतात. या प्रकरणात, कोडच्या कोणत्या भागात त्रुटी येते हे निर्धारित करणे आपल्यासाठी सोपे होईल.

    थांबण्याचे बिंदू निश्चित करा आणि चरण-दर-चरण करा

    तुम्ही कोडमध्ये ब्रेकपॉइंट जोडू शकता तुमचे कार्य जेथे कोडची अंमलबजावणी थांबेल. म्हणून आपण गणना प्रक्रियेचे चरण-दर-चरण अनुसरण करू शकता. असे केल्याने, व्हेरिएबल्सची मूल्ये कशी बदलतात ते तुम्ही पाहू शकता.

    ब्रेकपॉईंट जोडण्यासाठी, तुम्ही विराम देण्याचे निवडता त्या स्टेटमेंट असलेल्या ओळीवर कर्सर ठेवा. नंतर उजवे-क्लिक करा आणि डीबग -> ब्रेकपॉइंट टॉगल करा किंवा फक्त F9 दाबा. फंक्शन कोडच्या डावीकडील उभ्या राखाडी क्षेत्रावरील इच्छित ठिकाणी देखील तुम्ही क्लिक करू शकता.

    एक लाल वर्तुळ दिसेल, जसे तुम्ही खालील स्क्रीनशॉटमध्ये पाहू शकता. कोडची ओळ जिथे गणना थांबवली जाईल ती लाल रंगात हायलाइट केली जाते.

    आता, कार्य चालू असताना VBA संपादक विंडो उघडली जाईल. कर्सर तुम्ही जिथे थांबलात तिथे स्थित असेल.

    तुम्ही तुमचा माउस कर्सर फंक्शन कोडमधील कोणत्याही व्हेरिएबल्सवर फिरवत असल्यास, तुम्ही त्यांचा वर्तमान पाहू शकतामूल्य:

    गणना सुरू ठेवण्यासाठी F5 दाबा.

    टीप. ब्रेकपॉईंटनंतर, तुम्ही टप्प्याटप्प्याने गणनेच्या प्रगतीचा मागोवा घेणे सुरू करू शकता. तुम्ही F8 बटण दाबल्यास, VBA कोडची फक्त एक पुढील ओळ कार्यान्वित केली जाईल. बाण असलेली पिवळी रेषा देखील शेवटच्या निष्पादित कोड स्थानावर जाईल.

    फंक्शनच्या अंमलबजावणीला पुन्हा विराम दिल्याने, तुम्ही माउस कर्सर वापरून फंक्शनच्या सर्व व्हेरिएबल्सची वर्तमान मूल्ये पाहू शकता.

    F8 चे पुढील प्रेस आम्हाला एक पाऊल पुढे नेईल. . त्यामुळे तुम्ही गणना संपेपर्यंत F8 दाबू शकता. किंवा पुढील ब्रेकपॉइंटपर्यंत गणना सुरू ठेवण्यासाठी F5 दाबा.

    एरर आढळल्यास, कर्सर कोडमधील बिंदूवर थांबेल जिथे त्रुटी आली. आणि तुम्हाला एक पॉप-अप त्रुटी संदेश देखील दिसेल. यामुळे समस्येचे कारण शोधणे सोपे होते.

    तुम्ही फाइल बंद करेपर्यंत तुम्ही निर्दिष्ट केलेले ब्रेकपॉइंट लागू केले जातील. तुम्ही ते पुन्हा उघडल्यावर, तुम्हाला ते पुन्हा सेट करावे लागतील. सर्वात सोयीस्कर पद्धत नाही, तुम्हाला वाटत नाही?

    तथापि, ही समस्या सोडवली जाऊ शकते. आवश्यक बिंदूंवर फंक्शन कोडमध्ये थांबा स्टेटमेंट घाला आणि तुम्ही ब्रेकपॉइंट वापरत असताना त्याच प्रकारे प्रोग्रामची अंमलबजावणी थांबवू शकता.

    जेव्हा व्हीबीएला थांबा विधान आढळते, तेव्हा ते प्रोग्रामची अंमलबजावणी थांबवेल आणि तुमच्या कृतीची प्रतीक्षा करेल. नंतर व्हेरिएबल्सची मूल्ये तपासासुरू ठेवण्यासाठी F5 दाबा.

    किंवा वर वर्णन केल्याप्रमाणे चरण-दर-चरण फंक्शन पूर्ण करण्यासाठी F8 दाबा.

    थांबा विधान हा प्रोग्रामचा भाग आहे आणि म्हणून हटविले नाही, जसे ब्रेकपॉइंटच्या बाबतीत आहे. तुमचे डीबगिंग पूर्ण झाल्यावर, ते स्वतः काढून टाका. किंवा एकल कोट (') सह त्याच्या आधी टिप्पण्यामध्ये बदला.

    Debug.Print ऑपरेटर वापरून डीबग करणे

    तुम्ही Debug.Print मध्ये ठेवू शकता. फंक्शन कोड योग्य ठिकाणी. चक्रीयपणे बदलत असलेल्या व्हेरिएबल्सची मूल्ये तपासण्यासाठी हे उपयुक्त आहे.

    तुम्ही डीबगचे उदाहरण पाहू शकता. खाली स्क्रीनशॉटवर प्रिंटचे कार्यप्रदर्शन पाहू शकता.

    विधान Debug.Print i, vMax मुद्रित मूल्ये आणि त्यांची क्रमिक संख्या.

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

    प्रक्रियेतून फंक्शन कॉल करा

    तुम्ही वर्कशीटमधील सेलमधून नव्हे तर एका प्रक्रियेतून वापरकर्ता परिभाषित फंक्शन कॉल करू शकता. या प्रकरणात, सर्व त्रुटी व्हिज्युअल बेसिक एडिटर विंडोमध्ये दाखवल्या जातील.

    तुम्ही वापरकर्ता-परिभाषित फंक्शनला GetMaxBerween कसे कॉल करू शकता ते येथे आहे.प्रक्रिया:

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

    कोडमध्ये कुठेही कर्सर ठेवा आणि F5 दाबा. फंक्शनमध्ये कोणतीही त्रुटी नसल्यास, तुम्हाला गणना परिणामासह एक पॉप-अप विंडो दिसेल.

    एररच्या बाबतीत, तुम्हाला VBA संपादकामध्ये एक संबंधित संदेश दिसेल. गणना थांबवली जाईल आणि कोडची ओळ ज्यामध्ये त्रुटी आली ती पिवळ्या रंगात हायलाइट केली जाईल. त्रुटी कुठे आणि का आली हे तुम्ही सहज ओळखू शकता.

    इतकेच. आता तुम्ही तुमचे स्वतःचे अॅड-इन तयार केले आहे, ते एक्सेलमध्ये जोडले आहे आणि तुम्ही त्यात UDF वापरू शकता. तुम्हाला आणखी UDF वापरायचे असल्यास, VBA एडिटरमधील अॅड-इन मॉड्यूलमध्ये कोड लिहा आणि सेव्ह करा.

    आजसाठी एवढेच. आम्ही सानुकूल फंक्शन्स डीबग करण्याचे विविध मार्ग कव्हर केले आहेत आणि ते तुमच्या वर्कबुकमध्ये कसे वापरायचे ते शिकले आहे. आम्हाला आशा आहे की तुम्हाला ही मार्गदर्शक तत्त्वे उपयुक्त वाटतील. तुम्हाला काही प्रश्न असल्यास, या लेखातील टिप्पण्यांमध्ये लिहा.

    मायकेल ब्राउन हे सॉफ्टवेअर टूल्स वापरून जटिल प्रक्रिया सुलभ करण्याच्या उत्कटतेने एक समर्पित तंत्रज्ञान उत्साही आहे. टेक उद्योगातील एका दशकाहून अधिक अनुभवासह, त्यांनी Microsoft Excel आणि Outlook, तसेच Google Sheets आणि Docs मध्ये आपल्या कौशल्यांचा गौरव केला आहे. मायकेलचा ब्लॉग त्याचे ज्ञान आणि कौशल्य इतरांसोबत सामायिक करण्यासाठी समर्पित आहे, उत्पादकता आणि कार्यक्षमता सुधारण्यासाठी सुलभ टिपा आणि ट्यूटोरियल प्रदान करतो. तुम्ही अनुभवी व्यावसायिक असाल किंवा नवशिक्या असाल, मायकेलचा ब्लॉग या आवश्यक सॉफ्टवेअर टूल्सचा जास्तीत जास्त फायदा घेण्यासाठी मौल्यवान अंतर्दृष्टी आणि व्यावहारिक सल्ला देतो.