VBA के साथ एक्सेल मैक्रोज़ की प्रोग्रामिंग करते समय 4 गलतियों से बचें

VBA के साथ एक्सेल मैक्रोज़ की प्रोग्रामिंग करते समय 4 गलतियों से बचें

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





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





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





वीबीए के साथ शुरुआत करना

VBA आपके लिए हर तरह की साफ-सुथरी चीजें कर सकता है। शीट्स को संशोधित करने वाले मैक्रोज़ लिखने से लेकर VBA स्क्रिप्ट का उपयोग करके Excel स्प्रेडशीट से ईमेल भेजना आपकी उत्पादकता पर बहुत कम सीमाएं हैं।

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



सुनिश्चित करें कि चेकबॉक्स में यह टैब सक्षम है, और अब डेवलपर टैब आपके एक्सेल मेनू में दिखाई देगा।

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





अब आप VBA कोड लिखने के लिए तैयार हैं! यह टैब वह जगह है जहां आप वीबीए के साथ-साथ एक्सेस करेंगे एक्सेल में रिकॉर्डिंग मैक्रो . अब जब एक्सेल काम करने के लिए तैयार है, तो आइए कुछ सामान्य गलतियों से बचने के लिए, और उन्हें रोकने के तरीकों पर ध्यान दें।

1. भयानक चर नाम

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





Google क्रोम बुकमार्क और पासवर्ड कैसे निर्यात करें

अपने दशकों के कोड लेखन के दौरान, जब मैं परिवर्तनशील नामकरण परंपराओं की बात करता हूं, तो मैंने कई विचारधाराओं को देखा है और कुछ नियमों को कठिन तरीके से सीखा है। यहाँ चर नाम बनाने के लिए कुछ तेज़ सुझाव दिए गए हैं:

  • उन्हें यथासंभव छोटा करें।
  • उन्हें यथासंभव वर्णनात्मक बनाएं।
  • उन्हें चर प्रकार (बूलियन, पूर्णांक, आदि ...) के साथ प्रस्तुत करें।

यहां एक प्रोग्राम का एक नमूना स्क्रीनशॉट है जिसका उपयोग मैं अक्सर पीसी जानकारी एकत्र करने के लिए एक्सेल से WMIC विंडोज कॉल करने के लिए करता हूं।

जब आप मॉड्यूल या ऑब्जेक्ट के भीतर किसी फ़ंक्शन के अंदर वेरिएबल्स का उपयोग करना चाहते हैं (मैं इसे नीचे समझाऊंगा), तो आपको घोषणा के साथ इसे 'सार्वजनिक' चर के रूप में घोषित करने की आवश्यकता है सह लोक . अन्यथा, चर को शब्द के साथ जोड़कर घोषित किया जाता है कोई नहीं .

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

साथ ही, अपनी एक्सेल वर्कबुक में शीट्स को नाम देना सुनिश्चित करें।

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

2. लूपिंग के बजाय तोड़ना

सबसे आम समस्याओं में से एक नए वीबीए प्रोग्रामर के पास है जब वे कोड लिखना शुरू करते हैं तो लूप से ठीक से निपटते हैं।

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

नए प्रोग्रामर अक्सर एक निश्चित स्थिति के सही होने पर तुरंत एक लूप (वीबीए फॉर लूप्स या वीबीए डू व्हाइल लूप्स) से बाहर निकलना चाहते हैं।

वीबीए लूप को तोड़ने के लिए इस्तेमाल की जा रही इस विधि का एक उदाहरण यहां दिया गया है।

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

नए प्रोग्रामर यह तरीका अपनाते हैं क्योंकि यह आसान है। कोशिश करें और स्पष्ट रूप से एक लूप को तोड़ने से बचें।

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

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

यह आपके कोड के तार्किक प्रवाह की अनुमति देता है। अब कोड 6 पर पहुंचने के बाद लूप से गुजरेगा और बंद हो जाएगा। अजीब EXIT या BREAK मिड-लूप कमांड को शामिल करने की आवश्यकता नहीं है।

3. सरणियों का उपयोग नहीं करना

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

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

यदि आपने पहले कभी किसी सरणी का उपयोग नहीं किया है, तो डरें नहीं। एक निश्चित संख्या में 'क्यूब्स' के साथ एक आइस क्यूब ट्रे के रूप में एक सरणी की कल्पना करें जिसमें आप जानकारी डाल सकते हैं। क्यूब्स 1 से 12 तक गिने जाते हैं, और इस तरह आप उनमें डेटा 'डाल' देते हैं।

आप केवल टाइप करके एक सरणी को आसानी से परिभाषित कर सकते हैं मंद arrMyArray(12) पूर्णांक के रूप में .

फ़ोन नंबर पर ईमेल कैसे भेजें

यह आपके लिए भरने के लिए उपलब्ध 12 स्लॉट के साथ एक 'ट्रे' बनाता है।

यहाँ एक सरणी के बिना एक पंक्ति लूपिंग कोड कैसा दिख सकता है:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

इस उदाहरण में, कोड रेंज में हर एक सेल के माध्यम से प्रसंस्करण कर रहा है और तापमान गणना कर रहा है।

यदि आप कभी भी इन्हीं मूल्यों पर कुछ अन्य गणना करना चाहते हैं तो प्रक्रिया क्लूनी होगी। आपको इस कोड को डुप्लिकेट करना होगा, इन सभी कक्षों के माध्यम से संसाधित करना होगा, और अपनी नई गणना करनी होगी। सभी एक बदलाव के लिए!

सरणी का उपयोग करके यहां एक बेहतर उदाहरण दिया गया है। सबसे पहले, आइए सरणी बनाएं।

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

NS एक्स 1 सरणी तत्व को इंगित करने के लिए केवल आवश्यक है क्योंकि फॉर लूप 1 से शुरू होता है। ऐरे तत्वों को 0 से शुरू करने की आवश्यकता होती है।

अब जब आपके पास सरणी है तो सामग्री को संसाधित करना बहुत आसान है।

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

यह उदाहरण संपूर्ण पंक्ति सरणी के माध्यम से जाता है ( यूबाउंड आपको सरणी में डेटा मानों की संख्या देता है), तापमान की गणना करता है, और फिर इसे एक अन्य सरणी में डालता है जिसे कहा जाता है arrMyTemps .

4. बहुत अधिक सन्दर्भों का उपयोग करना

चाहे आप पूरी तरह से विजुअल बेसिक या वीबीए में प्रोग्रामिंग कर रहे हों, आपको कुछ सुविधाओं तक पहुंचने के लिए 'संदर्भ' शामिल करने की आवश्यकता होगी।

संदर्भ कार्यक्षमता से भरे 'पुस्तकालयों' की तरह होते हैं जिन्हें आप उस फ़ाइल को सक्षम करने पर टैप कर सकते हैं। आप डेवलपर दृश्य में संदर्भ पर क्लिक करके पा सकते हैं उपकरण मेनू में और फिर पर क्लिक करें संदर्भ .

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

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

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

एक बार चुने जाने के बाद, आप सभी ऑब्जेक्ट और उपलब्ध फ़ंक्शन देखेंगे, जिनके बारे में अधिक जानने के लिए आप उन पर क्लिक कर सकते हैं।

उदाहरण के लिए, जब मैं डीएओ पुस्तकालय पर क्लिक करता हूं तो यह जल्दी से स्पष्ट हो जाता है कि यह सब डेटाबेस से जुड़ने और संचार करने के बारे में है।

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

आइपॉड विंडोज़ 10 से संगीत कैसे निकालें

एक्सेल वीबीए में प्रोग्रामिंग

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

हालांकि वहाँ मत रुको। ए . के साथ एक्सेल कौशल की मजबूत नींव बनाएं शुरुआती के लिए VBA ट्यूटोरियल . फिर अपनी स्प्रैडशीट को स्वचालित करने में आपकी सहायता करने के लिए संसाधनों के साथ VBA और मैक्रोज़ के बारे में सीखते रहें।

साझा करना साझा करना कलरव ईमेल क्या यह विंडोज 11 में अपग्रेड करने लायक है?

विंडोज़ को नया रूप दिया गया है। लेकिन क्या यह आपको विंडोज 10 से विंडोज 11 में शिफ्ट होने के लिए मनाने के लिए काफी है?

आगे पढ़िए
संबंधित विषय
  • उत्पादकता
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • विजुअल बेसिक प्रोग्रामिंग
  • माइक्रोसॉफ्ट एक्सेल
लेखक के बारे में एंथोनी ग्रांट(40 लेख प्रकाशित)

एंथनी ग्रांट प्रोग्रामिंग और सॉफ्टवेयर को कवर करने वाला एक स्वतंत्र लेखक है। वह प्रोग्रामिंग, एक्सेल, सॉफ्टवेयर और टेक्नोलॉजी में कंप्यूटर साइंस के प्रमुख हैं।

एंथनी ग्रांट . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें