एक्सेलमा अनुकूलन प्रकार्यहरू कसरी डिबग गर्ने जान्नुहोस्

  • यो साझा गर्नुहोस्
Michael Brown

तपाईँलाई UDF हरू कसरी बनाउने भनेर पहिले नै थाहा छ (र, मलाई आशा छ, तपाईंले तिनीहरूलाई आफ्नो एक्सेलमा लागू गर्ने प्रयास गर्नुभएको छ), आउनुहोस् अलि गहिरो खन्नुहोस् र तपाईंको प्रयोगकर्ता परिभाषित प्रकार्यले काम नगरेको अवस्थामा के गर्न सकिन्छ भनेर हेरौं।

अनुकूल प्रकार्य सिर्जना गर्दा केही समस्याहरू समाधान गर्नको लागि, तपाईंले प्रायः डिबग चलाउन आवश्यक हुनेछ। त्यसोभए तपाइँ निश्चित हुन सक्नुहुन्छ कि प्रकार्यले ठीकसँग काम गरिरहेको छ।

हामी निम्न डिबगिङ प्रविधिहरू अन्वेषण गर्नेछौं:

    जब तपाइँ अनुकूलन प्रकार्य सिर्जना गर्नुहुन्छ, त्यहाँ सधैं सम्भावना हुन्छ। कि तपाईले गल्ती गर्नुहुनेछ। अनुकूलन कार्यहरू सामान्यतया धेरै जटिल हुन्छन्। र तिनीहरू सधैँ सही रूपमा काम गर्न सुरु गर्दैनन्। सूत्रले गलत नतिजा वा #VALUE फर्काउन सक्छ! त्रुटि। मानक एक्सेल प्रकार्यहरूको विपरीत, तपाईंले कुनै पनि अन्य सन्देशहरू देख्नुहुने छैन।

    यसको प्रत्येक कथनले कसरी काम गर्छ भनी जाँच्नको लागि एउटा अनुकूल प्रकार्य चरण-दर-चरण जाने तरिका छ? निश्चित! यसका लागि डिबगिङ प्रयोग गरिन्छ।

    म तपाइँलाई तपाइँको अनुकूलन प्रकार्य डिबग गर्ने धेरै तरिकाहरू प्रस्ताव गर्नेछु ताकि तपाइँ तपाइँको लागि काम गर्ने एउटा छनौट गर्न सक्नुहुन्छ।

    उदाहरणको रूपमा, हामी अनुकूलन प्रकार्य प्रयोग गर्दछौं। GetMaxBetween हाम्रो अघिल्लो लेखहरू मध्ये एकबाट जसले निर्दिष्ट गरिएको मानहरूको दायरामा अधिकतम संख्या गणना गर्दछ:

    प्रकार्य GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i integer ReDim arrNums(rngCells.Count) को रूपमा rngCells vMax मा प्रत्येक संख्या दायराको लागिNumRange चयन केस vMax Case MinNum + 0.01 देखि MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End चयन गर्नुहोस् अर्को NumRange GetMaxBetween = WorksheetFunction।Max(arrNums> फंक्शनहरू छन्। कक्षहरूको दायरा जहाँ संख्याहरू लेखिएको छ, साथै मानहरूको माथिल्लो र तल्लो सीमा।

    महत्वपूर्ण स्थानहरूमा MsgBox प्रकार्य राख्नुहोस्

    गणनाको कार्यान्वयनको निगरानी गर्न, तपाईँले प्रदर्शन गर्न सक्नुहुन्छ। सही स्थानहरूमा स्क्रिनमा सबैभन्दा महत्त्वपूर्ण चरहरूको मानहरू। यो पप-अप संवाद बाकसहरू प्रयोग गरेर गर्न सकिन्छ।

    MsgBox एउटा संवाद बाकस हो जसलाई तपाईँले प्रयोगकर्तालाई कुनै प्रकारको सन्देश देखाउन प्रयोग गर्न सक्नुहुन्छ।

    MsgBox को वाक्य रचना अन्य VBA प्रकार्यहरूसँग मिल्दोजुल्दो छ:

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

    prompt एक आवश्यक तर्क हो। यसले संवाद बक्समा देखेको सन्देश समावेश गर्दछ। यसलाई व्यक्तिगत चरहरूको मानहरू प्रदर्शन गर्न पनि प्रयोग गर्न सकिन्छ।

    अन्य सबै तर्कहरू ऐच्छिक छन्।

    [ बटनहरू ] - कुन बटन र आइकनहरू हुन् भनेर निर्धारण गर्दछ। MsgBox मा प्रदर्शित। उदाहरणका लागि, यदि हामीले विकल्प vbOkOnly प्रयोग गर्छौं, तब मात्र OK बटन प्रदर्शित हुनेछ। यदि तपाईंले यो तर्क छुटाउनुभयो भने पनि, यो बटन पूर्वनिर्धारित रूपमा प्रयोग गरिन्छ।

    [ शीर्षक ] - यहाँ तपाईंले सन्देश बाकसको शीर्षक निर्दिष्ट गर्न सक्नुहुन्छ।

    बाट स्विच गरौं। अभ्यास गर्न र डिबग सुरु गर्न शब्दहरू। प्रदर्शन गर्नसन्देश, केस Else अपरेटरको अगाडि 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, "गणना -" र amp; i Case Else GetMaxBetween = 0 End चयन गर्नुहोस् अर्को NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End प्रकार्य

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

    हामीले हाम्रो UDF सेट गरेपछि, हामी तलको सूत्रलाई मिति दायरामा लागू गर्छौं:

    = GetMaxBetween (A1:A6,10,50)

    इन्टर बटन पछि। थिचिएको छ, तपाईले तलको स्क्रिनसटमा जस्तै सन्देश देख्नुहुनेछ:

    यो दायरा A1: A6 मा पहिलो नम्बर हो जसले मापदण्ड पूरा गर्दछ: 10 भन्दा बढी तर कम ५० भन्दा बढी।

    तपाईँले ठीक क्लिक गरेपछि, दोस्रो सन्देश 14 नम्बरको साथ देखा पर्दछ। बाँकी नम्बरहरू चयनसँग मेल खाँदैनन्।मापदण्ड। त्यसकारण, प्रकार्यले दुईवटा मानहरूमध्ये सबैभन्दा ठूलो मानहरू बाहिर निस्कन्छ र फर्काउँछ, 17।

    MsgBox प्रकार्यलाई तपाइँको अनुकूलन प्रकार्यको सबैभन्दा महत्त्वपूर्ण स्थानहरूमा कसरी मानहरू नियन्त्रण गर्न प्रयोग गर्न सकिन्छ। व्यक्तिगत चर परिवर्तन। सन्देश बक्सहरू धेरै उपयोगी हुन सक्छन् जब तपाईंसँग ठूलो प्रकार्य र धेरै गणना हुन्छ। यस अवस्थामा, तपाईलाई कोडको कुन भागमा त्रुटि हुन्छ भनेर निर्धारण गर्न सजिलो हुनेछ।

    स्टपिङ बिन्दुहरू निर्धारण गर्नुहोस् र चरणबद्ध रूपमा कार्य गर्नुहोस्

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

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

    रातो सर्कल देखा पर्नेछ, जसरी तपाईँले तलको स्क्रिनसटमा देख्न सक्नुहुन्छ। कोडको रेखा जहाँ गणना रोकिनेछ रातोमा हाइलाइट गरिएको छ।

    अब, कार्य चलिरहेको बेला VBA सम्पादक विन्डो खोलिनेछ। कर्सर तपाईँले रोकेको बिन्दुमा राखिनेछ।

    यदि तपाईँले आफ्नो माउस कर्सरलाई फंक्शन कोडको कुनै पनि भेरिएबलमा होभर गर्नुभयो भने, तपाईँले तिनीहरूको वर्तमान देख्न सक्नुहुन्छ।मान:

    गणना जारी राख्न F5 थिच्नुहोस्।

    नोट। ब्रेकपोइन्ट पछि, तपाईले चरण-दर-चरण गणनाको प्रगति ट्र्याक गर्न सुरु गर्न सक्नुहुन्छ। यदि तपाईंले F8 बटन थिच्नुभयो भने, VBA कोडको अर्को लाइन मात्र कार्यान्वयन हुनेछ। तीरको साथ पहेंलो रेखा अन्तिम निष्पादित कोड स्थितिमा पनि सर्नेछ।

    फंक्शनको कार्यान्वयन फेरि रोकिएको हुनाले, तपाईंले माउस कर्सर प्रयोग गरेर प्रकार्यका सबै चरहरूको हालको मानहरू हेर्न सक्नुहुन्छ।

    F8 को अर्को प्रेसले हामीलाई एक कदम अगाडि लैजानेछ। । त्यसैले तपाईले गणनाको अन्त्य सम्म F8 थिच्न सक्नुहुन्छ। वा अर्को ब्रेकपोइन्टसम्म गणना जारी राख्न F5 थिच्नुहोस्।

    यदि त्रुटि भयो भने, त्रुटि भएको कोडको बिन्दुमा कर्सर रोकिनेछ। र तपाईले पप-अप त्रुटि सन्देश पनि देख्नुहुनेछ। यसले समस्याको कारण पत्ता लगाउन सजिलो बनाउँछ।

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

    तथापि, यो समस्या समाधान गर्न सकिन्छ। आवश्यक बिन्दुहरूमा प्रकार्य कोडमा रोक्नुहोस् कथन घुसाउनुहोस्, र तपाइँ ब्रेकपोइन्टहरू प्रयोग गर्दा जस्तै कार्यक्रम कार्यान्वयन रोक्न सक्नुहुन्छ।

    जब VBA ले Stop कथनलाई भेट्छ, यसले कार्यक्रम कार्यान्वयन रोक्छ र तपाइँको कार्यको लागि पर्खन्छ। चरहरूको मानहरू जाँच गर्नुहोस्, त्यसपछिजारी राख्न F5 थिच्नुहोस्।

    अथवा माथि वर्णन गरिए अनुसार कार्य चरण-दर-चरण पूरा गर्न F8 थिच्नुहोस्।

    रोक्नुहोस् कथन कार्यक्रमको अंश हो र त्यसैले मेटाइएको छैन, जस्तै ब्रेकपोइन्टको मामलामा। तपाईंले डिबग गरिसकेपछि, यसलाई आफै हटाउनुहोस्। वा यसलाई एकल उद्धरण (') को साथ अगाडि राखेर टिप्पणीमा बदल्नुहोस्।

    Debug.Print अपरेटर प्रयोग गरेर डिबगिङ गर्नुहोस्

    तपाईं Debug.Print मा राख्न सक्नुहुन्छ। सही ठाउँमा प्रकार्य कोड। यो चक्रीय रूपमा परिवर्तन हुने चरहरूको मानहरू जाँच गर्न उपयोगी छ।

    तपाईँले तलको स्क्रिनसटमा Debug.Print को कार्यसम्पादनको उदाहरण देख्न सक्नुहुन्छ।

    कथन Debug.Print i, vMax मान र तिनीहरूको क्रमिक संख्याहरू प्रिन्ट गर्दछ।

    तत्काल विन्डोमा तपाईंले चयन गरिएको दायराबाट दुई नम्बरहरू (17 र 14) देख्नुहुन्छ, जुन सीमाहरू सेट गर्नुहोस् र जसमध्ये अधिकतम चयन गरिनेछ। अंक 1 र 2 को अर्थ हो कि प्रकार्यले 2 चक्र पूरा गरेको छ जसमा संख्याहरू चयन गरिएको थियो। हामीले MsgBox सँग पहिले गरेझैं हामी सबैभन्दा महत्त्वपूर्ण चरहरूको मानहरू देख्छौं। तर यसले कार्यलाई रोकेन।

    प्रक्रियाबाट प्रकार्यलाई कल गर्नुहोस्

    तपाईंले कार्यपत्रको सेलबाट होइन, तर प्रक्रियाबाट प्रयोगकर्ता परिभाषित प्रकार्यलाई कल गर्न सक्नुहुन्छ। यस अवस्थामा, सबै त्रुटिहरू भिजुअल आधारभूत सम्पादक सञ्झ्यालमा देखाइनेछ।

    यहाँ तपाइँ कसरी प्रयोगकर्ता-परिभाषित प्रकार्य GetMaxBerween लाई कल गर्न सक्नुहुन्छ।कार्यविधि:

    Sub Test() Dim x x = GetMaxBetween(Range ( "A1:A6" ), 10, 50) MsgBox(x) End Sub

    कोडमा जहाँ पनि कर्सर राख्नुहोस् र F5 थिच्नुहोस्। यदि कार्यमा कुनै त्रुटि छैन भने, तपाईंले गणना परिणामको साथ एक पप-अप विन्डो देख्नुहुनेछ।

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

    यति मात्रै हो। अब तपाईंले आफ्नै एड-इन सिर्जना गर्नुभयो, यसलाई एक्सेलमा थप्नुभयो र तपाईं यसमा UDF प्रयोग गर्न सक्नुहुन्छ। यदि तपाईं थप UDFs प्रयोग गर्न चाहनुहुन्छ भने, VBA सम्पादकमा एड-इन मोड्युलमा कोड लेख्नुहोस् र यसलाई बचत गर्नुहोस्।

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

    माइकल ब्राउन सफ्टवेयर उपकरणहरू प्रयोग गरेर जटिल प्रक्रियाहरू सरल बनाउने जोशका साथ एक समर्पित टेक्नोलोजी उत्साही हो। प्राविधिक उद्योगमा एक दशक भन्दा बढी अनुभवको साथ, उनले Microsoft Excel र Outlook, साथै Google Sheets र Docs मा आफ्नो सीपलाई सम्मान गरेका छन्। माइकलको ब्लग आफ्नो ज्ञान र विशेषज्ञता अरूसँग साझेदारी गर्न समर्पित छ, उत्पादकता र दक्षता सुधार गर्न सजिलो-पछ्याउन-सजिलो सुझावहरू र ट्यूटोरियलहरू प्रदान गर्न। चाहे तपाईं अनुभवी पेशेवर होस् वा शुरुवातकर्ता होस्, माइकलको ब्लगले यी आवश्यक सफ्टवेयर उपकरणहरूबाट अधिकतम लाभ लिनको लागि बहुमूल्य अन्तर्दृष्टि र व्यावहारिक सल्लाह प्रदान गर्दछ।