एक्सेल वीबीए मैक्रोज़ का संपादन

एक्सेल वीबीए मैक्रोज़ के साथ काम करना

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

मैक्रो देखें

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

यदि एक से अधिक कार्यपुस्तिकाएँ खुली हैं, तो सभी कार्यपुस्तिकाओं के मैक्रो सूची में दिखाए जाएंगे। सक्रिय कार्यपुस्तिका में मैक्रोज़ केवल नाम से दिखाई देंगे, जबकि अन्य कार्यपुस्तिकाओं में मैक्रोज़ के आगे कार्यपुस्तिका का नाम और विस्मयादिबोधक बिंदु (यानी "Book2!OtherMacro") होगा।

संपादन के लिए मैक्रो खोलें

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

वैकल्पिक रूप से, आप डेवलपर टैब पर विजुअल बेसिक बटन पर क्लिक करके या एएलटी + एफ 11 कीबोर्ड शॉर्टकट दबाकर सीधे वीबी संपादक खोल सकते हैं।

इस पद्धति का उपयोग करते हुए, आपको अपने इच्छित मैक्रो (जिसे 'प्रक्रिया' भी कहा जाता है) पर नेविगेट करना होगा। हम वीबीए संपादक लेआउट पर जाएंगे:

वीबी संपादक का अवलोकन

वीबी संपादक में कई खिड़कियां हैं; इस ट्यूटोरियल में हम प्रोजेक्ट विंडो, प्रॉपर्टीज विंडो और कोड विंडो को कवर करेंगे।

प्रोजेक्ट विंडो

प्रोजेक्ट विंडो प्रत्येक एक्सेल फ़ाइल को अपने स्वयं के प्रोजेक्ट के रूप में दिखाती है, जिसमें उस प्रोजेक्ट में सभी ऑब्जेक्ट प्रकार के अनुसार वर्गीकृत होते हैं। रिकॉर्ड किए गए मैक्रोज़ "मॉड्यूल" श्रेणी में दिखाई देंगे, आमतौर पर ऑब्जेक्ट "मॉड्यूल 1" में। (यदि आपके प्रोजेक्ट में कई मॉड्यूल हैं और आप सुनिश्चित नहीं हैं कि आपका मैक्रो कहाँ संग्रहीत है, तो बस इसे उपरोक्त मैक्रोज़ डायलॉग से खोलें।)

गुण विंडो

प्रॉपर्टीज विंडो किसी ऑब्जेक्ट के गुण और संबंधित मान दिखाती है - उदाहरण के लिए, प्रोजेक्ट विंडो में वर्कशीट ऑब्जेक्ट पर क्लिक करने से वर्कशीट के गुणों की एक सूची दिखाई देगी। संपत्ति के नाम बाईं ओर हैं, और संपत्ति के मूल्य दाईं ओर हैं।

प्रोजेक्ट विंडो में एक मॉड्यूल का चयन यह दिखाएगा कि इसकी केवल एक संपत्ति है, "(नाम)"। आप संपत्ति के मूल्य पर डबल-क्लिक करके, एक नया नाम टाइप करके और एंटर दबाकर मॉड्यूल का नाम बदल सकते हैं। मॉड्यूल का नाम बदलने से प्रोजेक्ट विंडो में इसका नाम बदल जाएगा, जो कि बहुत सारे मॉड्यूल होने पर उपयोगी है।

कोड विंडो

कोड विंडो विशेष टेक्स्ट एडिटर हैं जिसमें आप अपने मैक्रो के VBA कोड को संपादित कर सकते हैं। यदि आप मॉड्यूल 1 में स्थित मैक्रो के लिए कोड देखना चाहते हैं, तो आप प्रोजेक्ट विंडो में 'मॉड्यूल 1' पर डबल-क्लिक करेंगे।

वीबी संपादक में मैक्रोज़ चलाना

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

एक मैक्रो चल रहा है

  • प्रोजेक्ट विंडो में, उस मैक्रो वाले मॉड्यूल पर डबल-क्लिक करें जिसे आप परीक्षण करना चाहते हैं (इसकी कोड विंडो खोलने के लिए)
  • कोड विंडो में, "सब" और "एंड सब" के बीच मैक्रो के कोड पर कहीं भी कर्सर रखें।
  • दबाएं Daud टूलबार पर बटन, या कीबोर्ड शॉर्टकट F5 दबाएं

"स्टेप-थ्रू" एक मैक्रो

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

मैक्रो को "स्टेप थ्रू" करने के लिए:

  • प्रोजेक्ट विंडो में, उस मैक्रो वाले मॉड्यूल पर डबल-क्लिक करें जिसे आप परीक्षण करना चाहते हैं (इसकी कोड विंडो खोलने के लिए)
  • कोड विंडो में, मैक्रो के कोड पर कहीं भी कर्सर रखें
  • "स्टेप-थ्रू" प्रक्रिया शुरू करने के लिए कीबोर्ड शॉर्टकट F8 दबाएं
  • कोड विंडो में पीले हाइलाइट द्वारा इंगित कोड निष्पादन को आगे बढ़ाने के लिए बार-बार F8 दबाएं
  • मैक्रो को जारी रखने से रोकने के लिए, दबाएं रीसेट बटन

वीबीए मैक्रोज़ क्यों संपादित करें?

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

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

नीचे, आपको अपने मैक्रो कोड को अनुकूलित करने में मदद करने के लिए कुछ आसान टिप्स मिलेंगे, साथ ही आपके मैक्रोज़ को अधिक कठिन और स्मार्ट बनाने के लिए टूल भी मिलेंगे।

सामान्य मैक्रो संपादन उदाहरण

मैक्रोज़ को गति दें

यदि आपके पास एक मैक्रो है जिसे चलने में लंबा समय लगता है, तो इसके धीरे-धीरे चलने के कुछ कारण हो सकते हैं।

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

'स्क्रीन अपडेटिंग एप्लिकेशन को अक्षम करें। स्क्रीन अपडेटिंग = गलत' स्क्रीन अपडेटिंग एप्लिकेशन को सक्षम करें। स्क्रीनअपडेटिंग = सच

लाइन "Application.ScreenUpdating = False" का अर्थ है कि आप मैक्रो को काम करते हुए नहीं देखेंगे, लेकिन यह बहुत तेज़ी से चलेगा। ध्यान दें कि आपको अपने मैक्रो के अंत में ScreenUpdating को हमेशा True पर सेट करना चाहिए, अन्यथा हो सकता है कि Excel उस तरह से कार्य न करे जैसा आप बाद में उम्मीद करते हैं!

मैक्रोज़ को गति देने का दूसरा तरीका:मैक्रो में ऑटो-गणना बंद करें. यदि आपने जटिल स्प्रैडशीट्स के साथ काम किया है, तो आपको पता चल जाएगा कि छोटे परिवर्तन हजारों गणनाओं को ट्रिगर कर सकते हैं जिन्हें पूरा होने में समय लगता है, यही वजह है कि कई लोग एक्सेल के विकल्पों में ऑटो-कैलकुलेशन को बंद कर देते हैं। आप इसे VBA कोड के साथ भी टॉगल कर सकते हैं, इसलिए आपका मैक्रो अन्य कंप्यूटरों पर अभी भी तेज़ी से काम करेगा। यह उन मामलों में मदद करता है जब आप बहुत सारे फ़ॉर्मूला सेल को कॉपी-पेस्ट कर रहे होते हैं, या जब आप डेटा को एक श्रेणी में पेस्ट करते हैं तो बहुत सारी गणनाएँ ट्रिगर होती हैं:

' ऑटो-कैलकुलेशन एप्लिकेशन को अक्षम करें। कैलकुलेशन = xl कैलकुलेशनमैनुअल ' ऑटो-कैलकुलेशन एप्लिकेशन को सक्षम करें। कैलकुलेशन = xl कैलकुलेशनऑटोमैटिक

लूप्स और लॉजिक जोड़ें (यदि कथन)

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

पाशन

मान लें कि आप एक मैक्रो बनाना चाहते हैं जो एक रिपोर्ट तैयार करता है, और उस मैक्रो के हिस्से के रूप में आपको कार्यपुस्तिका में कुल बीस के लिए उन्नीस शीट्स को जोड़ना होगा। आप बार-बार (+) बटन पर क्लिक करके खुद को रिकॉर्ड कर सकते हैं, या आप एक लूप लिख सकते हैं जो आपके लिए कार्रवाई को दोहराता है, जैसे:

सब रिपोर्टप्रेप () मंद i जितना लंबा i = 1 से 19 शीट्स के लिए। अगला जोड़ें i एंड सब

इस उदाहरण में, हम a . का उपयोग करते हैं पाश के लिए, जो एक प्रकार का लूप है जो कई मदों के माध्यम से पुनरावृत्त होता है। यहां, हमारी सीमा 1 से 19 तक की संख्या है, 'i' नाम के एक चर का उपयोग करके ताकि लूप ट्रैक रख सके। हमारे लूप के अंदर, के बीच केवल एक ही क्रिया दोहराई जा रही है के लिये तथाअगला लाइनें (शीट जोड़ना), लेकिन आप लूप के अंदर उतना ही कोड जोड़ सकते हैं जितना आप शीट को प्रारूपित करना चाहते हैं, या प्रत्येक शीट पर डेटा कॉपी और पेस्ट करना चाहते हैं - जो भी आप दोहराना चाहते हैं।

यदि कथन

एक यदि कथन निर्णय लेने के लिए तार्किक परीक्षण का उपयोग करके यह तय करने के लिए प्रयोग किया जाता है कि कुछ कोड चलता है या नहीं। यहाँ एक सरल उदाहरण है:

Sub ClearIfSmall () यदि चयन। मान <100 फिर चयन। समाप्त करें यदि अंत उप

यह सरल उदाहरण दिखाता है कि इफ स्टेटमेंट कैसे काम करता है - आप कुछ ऐसी स्थिति का परीक्षण करते हैं जो या तो सही है या गलत (क्या चयनित सेल का मान 100 से कम है?), और यदि परीक्षण सही लौटाता है, तो अंदर का कोड चलता है।

इस कोड की एक कमी यह है कि यह एक समय में केवल एक सेल का परीक्षण करता है (और यदि आप एक से अधिक सेल का चयन करते हैं तो यह विफल हो जाएगा)। यह अधिक उपयोगी होगा यदि आप … प्रत्येक चयनित सेल के माध्यम से लूप कर सकते हैं और प्रत्येक का परीक्षण कर सकते हैं …

उप ClearIfSmall () मंद सी चयन में प्रत्येक सी के लिए रेंज के रूप में। सेल यदि सी। वैल्यू <100 फिर सी। क्लियर एंड अगर अगला सी एंड सब

इस उदाहरण में, लूप के लिए थोड़ा अलग है - यह संख्याओं की एक श्रृंखला के माध्यम से लूप नहीं करता है, बल्कि ट्रैक रखने के लिए 'सी' नामक एक चर का उपयोग करके चयन में सभी कोशिकाओं के माध्यम से लूप करता है। लूप के अंदर, 'c' के मान का उपयोग यह निर्धारित करने के लिए किया जाता है कि सेल को साफ़ किया जाना चाहिए या नहीं।

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

<<>>

स्क्रॉलिंग प्रभाव हटाएं

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

स्क्रॉलिंग आपके कोड को अनावश्यक कोड की सैकड़ों या हजारों पंक्तियों के साथ अव्यवस्थित कर सकती है। यहां उस कोड का एक उदाहरण दिया गया है जो स्क्रॉलबार पर क्लिक करने और खींचने पर रिकॉर्ड हो जाता है:

इस प्रकार का कोड पूरी तरह से अनावश्यक है और किसी अन्य कार्यक्षमता को प्रभावित किए बिना हटाया जा सकता है। यहां तक ​​कि अगर आप स्क्रॉलिंग को बनाए रखना चाहते हैं, तब भी इस कोड को लूप में संघनित किया जा सकता है।

अनावश्यक कोड हटाएं

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

भले ही केवल फ़ॉन्ट नाम बदल दिया गया था, ग्यारह (11) फ़ॉन्ट परिवर्तन दर्ज किए गए थे जैसे फ़ॉन्ट आकार, टेक्स्ट प्रभाव इत्यादि। यदि मैक्रो का इरादा केवल फ़ॉन्ट नाम बदलना था (केवल अन्य सभी गुणों को छोड़कर) यह रिकॉर्ड किया गया मैक्रो काम नहीं करेगा!

इस मैक्रो को बदलना संभव है ताकि यह केवल फ़ॉन्ट नाम बदल सके:

यह मैक्रो न केवल अभी के अनुसार काम करेगा, बल्कि इसे पढ़ना भी बहुत आसान है।

कर्सर आंदोलनों को हटा दें

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

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

इस कोड में कुछ समस्याएं हैं:

  • उपयोगकर्ता कार्यपुस्तिका में अपना पिछला स्थान खो देगा
  • मैक्रो यह निर्दिष्ट नहीं करता है कि हम कौन सी शीट कॉपी कर रहे हैंसे - मैक्रो गलत शीट पर चलाए जाने पर यह एक समस्या हो सकती है

इसके अतिरिक्त, कोड को पढ़ना और बेकार करना मुश्किल है। इन मुद्दों को आसानी से हल किया जा सकता है:

इस कोड में, यह स्पष्ट है कि हम शीट 1 से कॉपी कर रहे हैं, और डेटा पेस्ट करने के लिए न तो सक्रिय वर्कशीट और न ही चयनित श्रेणी को बदलने की आवश्यकता है। (एक महत्वपूर्ण परिवर्तन "पेस्ट" के बजाय "पेस्टस्पेशल" का उपयोग है - रेंज ऑब्जेक्ट्स, जैसे "रेंज ("सी 4″)", केवल पेस्टस्पेशल कमांड तक पहुंच है।)

जब भी कोड ".Select" और "Selection" के संदर्भों से भरा हो जाता है, तो यह एक सुराग है कि उस कोड को अनुकूलित करने और इसे और अधिक कुशल बनाने के लिए जगह है।

आप साइट के विकास में मदद मिलेगी, अपने दोस्तों के साथ साझा करने पेज

wave wave wave wave wave