एएवीबीए - नहीं बीबी

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

वीबीए कक्षा मॉड्यूल - परिचय

जब आप अपना कोड दर्ज करने के लिए विजुअल बेसिक एडिटर (वीबीई) में मॉड्यूल डालते हैं, तो आपने देखा होगा कि आप 'क्लास मॉड्यूल' भी डाल सकते हैं।

कक्षा मॉड्यूल बनाम मॉड्यूल

क्लास मॉड्यूल सामान्य मॉड्यूल के लिए बहुत अलग तरीके से काम करते हैं, जिसमें वे एक कंपोनेंट ऑब्जेक्ट मॉडल (COM) बनाने की सुविधा प्रदान करते हैं, जिसे तब आपके सामान्य VBA कोड में उपयोग किया जा सकता है।

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

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

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

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

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

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

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

क्लास मॉड्यूल बनाने से आप अपने स्वयं के कस्टम ऑब्जेक्ट्स और सदस्यों के साथ एक्सेल ऑब्जेक्ट मॉड्यूल का विस्तार कर सकते हैं

यह लेख आपको बताता है कि आप क्लास मॉड्यूल का उपयोग करके वस्तुओं का एक साधारण पदानुक्रम कैसे बना सकते हैं।

कक्षा मॉड्यूल का उपयोग करने के लाभ

  1. आप एक मजबूत बिल्डिंग ब्लॉक विकसित कर सकते हैं जिसका उपयोग किसी भी संख्या में विभिन्न एक्सेल अनुप्रयोगों में किया जा सकता है
  2. एक बार इसका पूरी तरह से परीक्षण हो जाने के बाद, बिल्ट-इन एक्सेल ऑब्जेक्ट्स की तरह ही हमेशा सही परिणाम देने के लिए इस पर भरोसा किया जा सकता है
  3. यदि एप्लिकेशन में कहीं और कोड में अपडेट किए जाते हैं, तो नई वस्तु अभी भी उसी तरह काम करना जारी रखेगी
  4. आप अपने नए ऑब्जेक्ट का उपयोग अन्य Excel अनुप्रयोगों में ऐड-इन के रूप में कर सकते हैं
  5. वस्तुओं को अन्य अनुप्रयोगों में पुन: उपयोग किया जा सकता है और डिबगिंग में मदद करता है

कक्षा मॉड्यूल का उपयोग करने के नुकसान

  1. उन्हें बनाना और समझना मुश्किल हो सकता है।
  2. नामकरण परंपराएं बहुत महत्वपूर्ण हैं क्योंकि सामान्य मॉड्यूल के भीतर अपनी वस्तु का उपयोग करते समय आप यही देखेंगे।
  3. यदि आपने पहले कोई क्लास मॉड्यूल नहीं बनाया है, तो उन्हें समझना मुश्किल हो सकता है और सीखने की तीव्र अवस्था है
  4. रन-टाइम में बदलाव करना असंभव है - आपको प्रोजेक्ट को फिर से सेट करना होगा।
  5. यदि गुण और निजी चर का एक ही नाम है तो अनंत लूप हो सकते हैं जिसके परिणामस्वरूप त्रुटियां हो सकती हैं

कक्षा मॉड्यूल सम्मिलित करना

सम्मिलित करें चुनें | VBE (विजुअल बेसिक एडिटर) मेनू से क्लास मॉड्यूल। नए क्लास मॉड्यूल को स्वचालित रूप से 'कक्षा 1' कहा जाएगा, लेकिन इसे तुरंत उस नाम में बदलने की आवश्यकता है जिसे आप अपनी वस्तु के लिए उपयोग करने जा रहे हैं।

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

यदि गुण विंडो दिखाई नहीं दे रही है, तो देखें का चयन करें | VBE मेनू पर गुण या F4 दबाएं

अपने नए वर्ग मॉड्यूल 'MyItem' को कॉल करें और इसके लिए कोड विंडो प्रदर्शित करने के लिए प्रोजेक्ट एक्सप्लोरर में ट्री-व्यू में नाम पर डबल क्लिक करें।

ऑब्जेक्ट आइटम बनाना

यह उदाहरण 'MyItems' नामक एक शीर्ष-स्तरीय ऑब्जेक्ट बनाएगा जिसके नीचे एक सदस्य ऑब्जेक्ट होगा जिसे 'MyItem' कहा जाता है जो प्रत्येक आइटम के लिए अलग-अलग डेटा रखेगा। एक बार बन जाने के बाद यह उसी तरह काम करेगा जैसे बिल्ट इन एक्सेल ऑब्जेक्ट। उदाहरण के लिए, 'वर्कशीट' नामक एक वस्तु है जो आपकी कार्यपुस्तिका के भीतर प्रत्येक कार्यपत्रक का एक संग्रह है। 'शीट' नामक एक वस्तु भी है जो आपकी कार्यपुस्तिका के भीतर प्रत्येक व्यक्तिगत कार्यपत्रक का प्रतिनिधित्व करती है, और प्रत्येक कार्यपत्रक के सभी गुणों और विधियों को रखती है। यह वस्तु 'कार्यपत्रक' संग्रह वस्तु से संबंधित है।

आप प्रत्येक 'शीट' को बारी-बारी से देखते हुए 'वर्कशीट' संग्रह के माध्यम से पुनरावृति कर सकते हैं। उसी तरह आप 'MyItems' संग्रह के माध्यम से उन गुणों को देखने में सक्षम होंगे जिन्हें आपने 'Myitem' सदस्य में बनाया था।

पहली बात यह है कि सदस्य स्तर के लिए उप वस्तु बनाना है जो वास्तविक वस्तुओं को शीर्ष-स्तरीय वस्तु के संग्रह में रखेगा। यह एक्सेल में 'शीट' ऑब्जेक्ट के भीतर सदस्यों (जैसे नाम, दृश्यमान, गिनती) के बराबर है। यह कोड 'MyItem' नामक वर्ग मॉड्यूल में दर्ज किया गया है

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

उप वस्तु में हम वस्तु के लिए दो गुण बनाने जा रहे हैं - वस्तु और विवरण

प्रारंभ में दो स्ट्रिंग चर को गुणों के लिए मान रखने के लिए घोषित करने की आवश्यकता है:

12 स्ट्रिंग के रूप में निजी mItemस्ट्रिंग के रूप में निजी mDetail

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

उन्हें उन संपत्तियों से अलग बनाने के लिए अद्वितीय नाम दिए जाने की आवश्यकता है जो हम बनाने जा रहे हैं, इसलिए प्रत्येक नाम के आगे एक 'एम' (सदस्य के लिए) रखा गया है।

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

अगला कदम दो संपत्तियों तक पहुंच प्रदान करने के लिए कोड सेट करना है। आप प्रत्येक संपत्ति के लिए एक संपत्ति चलो और एक संपत्ति प्राप्त विवरण के माध्यम से ऐसा करते हैं। ये सार्वजनिक होने चाहिए अन्यथा शीर्ष-स्तरीय ऑब्जेक्ट में कोई दृश्य गुण नहीं होंगे

123456789101112131415 सार्वजनिक संपत्ति चलो आइटम (स्ट्रिंग के रूप में vdata)एमआइटम = वीडेटाअंत संपत्तिसार्वजनिक संपत्ति आइटम प्राप्त करें () स्ट्रिंग के रूप मेंमद = एमआइटमअंत संपत्तिसार्वजनिक संपत्ति विवरण दें (vdata स्ट्रिंग के रूप में)mDetail = vdataअंत संपत्तिसार्वजनिक संपत्ति विवरण प्राप्त करें () स्ट्रिंग के रूप मेंविवरण = mDetailअंत संपत्ति

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

संबंधित संपत्ति को डेटा पास करने के लिए 'vdata' पैरामीटर का उपयोग किया जाता है।

यह महत्वपूर्ण है कि प्रत्येक संपत्ति में 'लेट' और 'गेट' स्टेटमेंट हो और प्रत्येक मामले में संपत्ति का नाम समान हो। यदि गलत वर्तनी है तो आप दो अलग-अलग गुणों के साथ समाप्त हो सकते हैं - एक जिसे आप पढ़ सकते हैं और एक जिसे आप लिख सकते हैं!

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

यह एक पॉप-अप विंडो प्रदर्शित करेगा जहां आप संपत्ति का नाम टाइप करते हैं और रेडियो बटन पर 'संपत्ति' का चयन करते हैं:

'ओके' पर क्लिक करें और स्केलेटन कोड क्लास मॉड्यूल में जुड़ जाएगा:

1234567 सार्वजनिक संपत्ति MyProperty () को वैरिएंट के रूप में प्राप्त करेंअंत संपत्तिसार्वजनिक संपत्ति लेट माईप्रॉपर्टी (ByVal vNewValue वैरिएंट के रूप में)अंत संपत्ति

यह संपत्तियों के नाम पर किसी भी गलती को रोकता है। आप बस अपना कोड 'सार्वजनिक संपत्ति' और 'अंतिम संपत्ति' कथनों के बीच में जोड़ दें।

अब आपके पास 'MyItem' नाम की एक वस्तु है जो इस अभ्यास के लिए सभी डेटा रखेगी।

VBA कोड उदाहरण खोज कर थक गए हैं? ऑटोमैक्रो का प्रयास करें!

एक संग्रह बनाना

अगला चरण संग्रह ऑब्जेक्ट के रूप में एक शीर्ष-स्तरीय ऑब्जेक्ट बनाना है जो उन गुणों तक पहुंच प्रदान करता है जिन्हें आपने 'MyItem' ऑब्जेक्ट में सेट किया है।

फिर से, आपको संग्रह वस्तु के रूप में कार्य करने के लिए एक कार्यशील वस्तु को उसी तरह परिभाषित करने की आवश्यकता है जैसे आपने 'MyItem' ऑब्जेक्ट में दो स्ट्रिंग चर को परिभाषित किया था।

1 संग्रह के रूप में निजी एमआइटम

फिर, इसका एक अनूठा नाम होना चाहिए, इसलिए नाम के आगे एक 'एम' (सदस्य वस्तु) है, और इसे 'निजी' के रूप में भी घोषित किया जाता है ताकि नई वस्तु होने पर यह प्रकट न हो उपयोग किया गया

इसके बाद, आपको Class_Initialize कोड को पॉप्युलेट करना होगा। यह तब चलता है जब आप पहली बार अपने कोड में ऑब्जेक्ट का उपयोग करते हैं, और यह निर्धारित करता है कि ऑब्जेक्ट में कौन से मान लोड किए जाएंगे

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

12345678910 निजी सब क्लास_इनिशियलाइज़ ()मंद objItem MyItem के रूप मेंसेट एमआइटम = नया संग्रहn = 1 से 3 . के लिएसेट objItem = नया MyItemobjItem.Item = वर्कशीट्स ("शीट 1")। रेंज ("ए" और एन)। मानobjItem.Detail = वर्कशीट ("शीट 1")। रेंज ("बी" और एन)। मानmItems.objItem जोड़ेंअगला नंबरअंत उप

कोड 'objItem' नामक एक ऑब्जेक्ट को 'MyItem' की परिभाषा का उपयोग करके सेट करता है जिसे हमने पहले एक क्लास मॉड्यूल के रूप में बनाया था।

इसके बाद यह पहले परिभाषित 'mItems' ऑब्जेक्ट के आधार पर एक नया संग्रह बनाता है

यह कार्यपुस्तिका के पत्रक 1 पर रखे गए मानों के माध्यम से पुनरावृति करता है और उन्हें उन गुणों में डालता है जिन्हें हमने 'MyItem' ऑब्जेक्ट के लिए बनाया है। ध्यान दें कि जब आप 'objitem' का उपयोग करते हैं, तो दो गुणों को दिखाते हुए एक ड्रॉप डाउन दिखाई देता है, ठीक वैसे ही जैसे आप एक अंतर्निहित एक्सेल ऑब्जेक्ट का उपयोग कर रहे थे।

आइटम ऑब्जेक्ट को तब संग्रह ऑब्जेक्ट में जोड़ा जाता है जो अब संपत्ति के मूल्यों में सभी डेटा रखता है।

इनपुट डेटा को वर्कशीट से नहीं लेना पड़ता है। यह स्थिर मान हो सकता है, या यह Microsoft Access या SQL सर्वर जैसे डेटाबेस से कनेक्शन से आ सकता है, या यह किसी अन्य कार्यपत्रक से आ सकता है।

फिर आपको 'आइटम' नामक एक सार्वजनिक फ़ंक्शन जोड़ने की आवश्यकता है

123 पब्लिक फंक्शन आइटम (इंडेक्स अस इंटीजर) MyItem के रूप मेंआइटम सेट करें = mItems.Item (सूचकांक)अंत समारोह

यह आपको संग्रह वस्तु के भीतर अलग-अलग वस्तुओं को उनकी अनुक्रमणिका संख्या द्वारा संदर्भित करने की अनुमति देता है। यह फ़ंक्शन पृष्ठभूमि में 'mMyItems' संग्रह में क्या हो रहा है, इसका एक 'दर्पण' प्रदान करता है।

आपको 'गणना' नामक एक संपत्ति भी जोड़ने की आवश्यकता होगी ताकि आपका कोड यह स्थापित कर सके कि 'MyItems' संग्रह में कितने 'MyItem' ऑब्जेक्ट हैं, क्या आप इसके माध्यम से पुनरावृति करना चाहते हैं।

123 सार्वजनिक संपत्ति गणना प्राप्त करें () लंबे समय तकगणना = mItems.Countअंत संपत्ति

इस मामले में आपको केवल 'प्राप्त करें' संपत्ति की आवश्यकता है क्योंकि यह केवल पढ़ने के लिए है। यह mItems संग्रह का उपयोग करता है क्योंकि इसमें पहले से ही एक गिनती संपत्ति बनाई गई है।

अब आपके पास 'MyItem' ऑब्जेक्ट द्वारा परिभाषित एक पूर्ण पदानुक्रम के साथ एक ऑब्जेक्ट (MyItems) है।

पूरी चीज़ को काम करने के लिए, अब आपको डेटा के साथ एक वर्कशीट (शीट 1) को पॉप्युलेट करना होगा ताकि क्लास इनिशियलाइज़ रूटीन इसे ऑब्जेक्ट में एकत्र कर सके

आपकी स्प्रेडशीट इस तरह दिखनी चाहिए:

अपनी नई वस्तु का उपयोग करना

अब आप एक मानक एक्सेल वीबीए मॉड्यूल के भीतर अपने संग्रह ऑब्जेक्ट (MyItems) का उपयोग कर सकते हैं। निम्नलिखित कोड दर्ज करें:

12345678 सब टेस्ट_ऑब्जेक्ट ()मंद MyClass नए MyItems के रूप में, n पूर्णांक के रूप मेंMsgBox MyClass.Countn = 1 के लिए MyClass.Count . के लिएMsgBox MyClass.Item(n).ItemMsgBox MyClass.Item(n).Detailअगला नंबरअंत उप

यह कोड आपके द्वारा बनाए गए संग्रह ऑब्जेक्ट के आधार पर 'MyClass' नामक एक ऑब्जेक्ट बनाता है जिसे 'MyItems' कहा जाता है। यह 'इनिशियलाइज़' रूटीन को बंद कर देता है जो वर्कशीट से सभी डेटा को ऑब्जेक्ट में निकाल देता है।

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

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

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

1234567 सब टेस्ट_स्टेटिक ()नए MyItems के रूप में स्टेटिक Myclass, n पूर्णांक के रूप मेंn = 1 के लिए Myclass.Count . के लिएMsgBox Myclass.Item(n).ItemMsgBox Myclass.Item(n).Detailअगला नंबरअंत उप

क्लास मॉड्यूल का उपयोग करके ऑब्जेक्ट बनाने का सारांश

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

हालाँकि, आपके कोड को अधिक सुरुचिपूर्ण और पढ़ने में आसान बनाने में इसके बहुत बड़े फायदे हैं। इसे ऐड-इन में बदलकर अन्य एक्सेल एप्लिकेशन और डेवलपर्स के साथ साझा करना भी आसान है।

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

अपने नए ऑब्जेक्ट के साथ, आप डेटा को होल्ड करने के लिए बस इसे और इसके नीचे बनाए गए सदस्यों को संदर्भित कर सकते हैं।

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

वैरिएबल रिपोजिटरी बनाने के लिए क्लास मॉड्यूल का उपयोग करना

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

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

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

एक रिपॉजिटरी बनाने के लिए, आपको एक नया क्लास मॉड्यूल डालना होगा। आप इसे इन्सर्ट | . का उपयोग करके करते हैं वीबी संपादक मेनू से कक्षा मॉड्यूल

इस लेख में पहले चर्चा की गई उसी पद्धति का उपयोग करके नाम को 'MyVariables' में बदलें।

निम्नलिखित कोड दर्ज करें:

12345678910111213141516 निजी एमवी वैरिएंट के रूप मेंसार्वजनिक संपत्ति Variable1 () के रूप में प्राप्त करेंचर1 = एमवीअंत संपत्तिसार्वजनिक संपत्ति लेट वेरिएबल1 (ByVal vNewValue वैरिएंट के रूप में)एमवी = वीन्यूवैल्यूअंत संपत्तिसार्वजनिक संपत्ति Variable2 () के रूप में प्राप्त करेंचर1 = एमवीअंत संपत्तिसार्वजनिक संपत्ति Let Variable2(ByVal vNewValue as Variant)एमवी = वीन्यूवैल्यूअंत संपत्ति

यह कोड दो चर ('चर 1' और 'चर 2') के लिए 'लेट' और 'गेट' गुण सेट करता है। आपके प्रत्येक चर के लिए Let और Get गुण आवश्यक हैं ताकि वे पढ़े / लिखे जा सकें

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

वेरिएबल 'एमवी' की निजी घोषणा एक वर्किंग वेरिएबल बनाने के लिए है जिसका उपयोग केवल क्लास मॉड्यूल के भीतर मूल्यों को स्थानांतरित करने के लिए किया जाता है।

परिवर्तनीय भंडार का उपयोग करने के लिए, निम्न कोड को मानक मॉड्यूल में दर्ज करें:

123456 नए MyVariables के रूप में Global VarRepoसब टेस्ट वेरिएबल रिपोजिटरी ()MsgBox VarRepo.Variable1VarRepo.Variable1 = 10MsgBox VarRepo.Variable1अंत उप

यह कोड आपके 'MyVariables' ऑब्जेक्ट का एक वैश्विक उदाहरण बनाता है जिसे आपने बनाया था। आपको यह घोषणा केवल अपने कोड में कहीं से भी एक बार करने की आवश्यकता है।

कोड पहले 'Variable1' का मान प्रदर्शित करता है ताकि यह दिखाया जा सके कि यह खाली है।

10 का मान 'वैरिएबल 1' को सौंपा गया है और ऑब्जेक्ट के भीतर नया मान प्रदर्शित किया जाता है ताकि यह दिखाया जा सके कि यह संपत्ति अब यह मान रखती है।

चूंकि 'MyVariables' ऑब्जेक्ट का उदाहरण विश्व स्तर पर परिभाषित किया गया है, आप अपने कोड के भीतर कहीं से भी ऑब्जेक्ट के भीतर किसी भी परिभाषित चर का उल्लेख कर सकते हैं।

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

महान उत्पाद। AutoMacro सिर्फ आपका कोड नहीं लिखता है, यह आपके जाते ही सिखा देता है!" - टोनी, यूके

और अधिक जानें

हमारी 900+ समीक्षाएं पढ़ें

अपने ऑब्जेक्ट को ऐड-इन में बदलना

अब तक, ऑब्जेक्ट निर्माण के लिए कोड आपके कार्यपुस्तिका एप्लिकेशन के भीतर है। हालाँकि, यदि आप अपने ऑब्जेक्ट को अन्य डेवलपर्स के साथ या अपने स्वयं के अन्य एक्सेल एप्लिकेशन में साझा करने में सक्षम होना चाहते हैं, तो आप इसे ऐड-इन में बदल सकते हैं।

ऐसा करने के लिए, फ़ाइल को ऐड-इन के रूप में सहेजना है। फ़ाइल का चयन करें | इस रूप में सहेजें और एक ब्राउज़र विंडो दिखाई देगी

फ़ाइल प्रकार ड्रॉप डाउन से ऐड-इन (.xlam) के रूप में फ़ाइल प्रकार का चयन करें और ठीक क्लिक करें। फ़ाइल डिफ़ॉल्ट रूप से ऐड-इन फ़ोल्डर में सहेजी जाएगी, लेकिन आप स्थान बदल सकते हैं।

फिर आप ऐड-इन फ़ाइल को अपने एक्सेल एप्लिकेशन में शामिल कर सकते हैं, जिससे आपको अपने नए ऑब्जेक्ट का उपयोग करने की सुविधा मिलती है

अपने नए ऐड-इन को एक्सेल में शामिल करने के लिए, एक्सेल रिबन पर फाइल पर क्लिक करें और फिर बाएँ हाथ के फलक के नीचे विकल्प पर क्लिक करें।

दिखाई देने वाली पॉप-अप विंडो में बाएँ फलक में 'ऐड-इन्स' पर क्लिक करें। खिड़की के नीचे 'गो' के रूप में चिह्नित एक बटन है

इस पर क्लिक करें और एक 'ऐड-इन' पॉप-अप विंडो दिखाई देगी। 'ब्राउज' पर क्लिक करें और फिर अपनी ऐड-इन फाइल का पता लगाएं। फिर आप अपने ऑब्जेक्ट को अपने कोड में संदर्भित करने में सक्षम होंगे।

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

wave wave wave wave wave