एक ArrayList वस्तु एक संग्रह वस्तु के समान है, लेकिन इसमें कहीं अधिक विधियाँ और गुण हैं, और इसलिए प्रोग्रामिंग के दृष्टिकोण से कहीं अधिक लचीलापन है।
एक संग्रह वस्तु में केवल दो विधियाँ होती हैं (जोड़ें, निकालें) और दो गुण (गणना, आइटम) जबकि एक सरणी सूची में और भी बहुत कुछ है। साथ ही, संग्रह ऑब्जेक्ट केवल पढ़ा जाता है। एक बार मान जोड़े जाने के बाद, अनुक्रमित मान को बदला नहीं जा सकता है, जबकि एक ऐरे सूची पर, संपादन संभव है।
कई ऐरे सूची विधियां पैरामीटर का उपयोग करती हैं। कई मानक VBA विधियों के विपरीत, इनमें से कोई भी पैरामीटर वैकल्पिक नहीं है। साथ ही, कुछ विधियाँ और गुण हमेशा उसी तरह दर्ज किए जाने पर कैपिटलाइज़ नहीं होते हैं जैसे वे Excel VBA में करते हैं। हालांकि, वे अभी भी काम करते हैं।
ArrayList ऑब्जेक्ट कितनी वस्तुओं में शामिल है, इसके अनुसार आकार में विस्तार और अनुबंध करता है। ऐरे की तरह उपयोग करने से पहले इसे आयाम देने की आवश्यकता नहीं है।
सरणी सूची एक आयामी (संग्रह वस्तु के समान) है और डिफ़ॉल्ट डेटा प्रकार भिन्न है, जिसका अर्थ है कि यह किसी भी प्रकार के डेटा को स्वीकार करेगा, चाहे वह संख्यात्मक, पाठ या दिनांक हो।
कई मायनों में ऐरे सूची संग्रह वस्तु की कई कमियों को संबोधित करती है। यह निश्चित रूप से कहीं अधिक लचीला है कि यह क्या कर सकता है।
ऐरे लिस्ट ऑब्जेक्ट मानक वीबीए लाइब्रेरी का हिस्सा नहीं है। आप इसे अपने एक्सेल वीबीए कोड में लेट या अर्ली बाइंडिंग का उपयोग करके उपयोग कर सकते हैं
1234 | उप लेट बाइंडिंग उदाहरण ()मंद MyList वस्तु के रूप मेंMyList सेट करें = CreateObject ("System.Collections.ArrayList")अंत उप |
123 | उप अर्लीबाइंडिंगउदाहरण ()नई ArrayList के रूप में मंद MyListअंत उप |
प्रारंभिक बाध्यकारी उदाहरण का उपयोग करने के लिए, आपको पहले वीबीए में 'mscorlib.tlb' फ़ाइल में एक संदर्भ दर्ज करना होगा।
आप 'टूल्स | .' का चयन करके ऐसा करते हैं विजुअल बेसिक एडिटर (वीबीई) विंडो से संदर्भ '। सभी उपलब्ध संदर्भों के साथ एक पॉप-अप विंडो दिखाई देगी। नीचे 'mscorlib.dll' तक स्क्रॉल करें और उसके आगे वाले बॉक्स पर टिक करें। ओके पर क्लिक करें और वह लाइब्रेरी अब आपके प्रोजेक्ट का हिस्सा है:
Array List ऑब्जेक्ट की एक बड़ी कमी यह है कि इसमें 'Intellisense' नहीं होता है। आम तौर पर, जहां आप वीबीए में किसी ऑब्जेक्ट का उपयोग कर रहे हैं जैसे कि एक श्रेणी, आपको सभी उपलब्ध गुणों और विधियों की एक पॉप-अप सूची दिखाई देगी। आपको यह एक ऐरे सूची ऑब्जेक्ट के साथ नहीं मिलता है, और यह सुनिश्चित करने के लिए कभी-कभी सावधानीपूर्वक जांच की आवश्यकता होती है कि आपने विधि या संपत्ति को सही ढंग से लिखा है।
इसके अलावा, यदि आप VBE विंडो में F2 दबाते हैं, और 'सरणी सूची' पर खोज करते हैं, तो कुछ भी प्रदर्शित नहीं होगा, जो एक डेवलपर के लिए बहुत उपयोगी नहीं है।
आपका कोड अर्ली बाइंडिंग के साथ काफी तेजी से चलेगा, क्योंकि यह सब सामने संकलित है। लेट बाइंडिंग के साथ, कोड के चलने पर ऑब्जेक्ट को कंपाइल करना पड़ता है
एक ऐरे सूची वाले अपने एक्सेल एप्लिकेशन को वितरित करना
जैसा कि पहले ही बताया जा चुका है, ऐरेलिस्ट ऑब्जेक्ट एक्सेल वीबीए का हिस्सा नहीं है। इसका मतलब यह है कि आपके किसी भी सहकर्मी को जिसे आप एप्लिकेशन वितरित करते हैं, उसके पास 'mscorlib.tlb' फ़ाइल तक पहुंच होनी चाहिए।
यह फ़ाइल सामान्य रूप से इसमें स्थित है:
C:\Windows\Microsoft.NET\Framework\v4.0.30319
यह जांचने के लिए कुछ कोड (डीआईआर विधि का उपयोग करके) लिखने लायक हो सकता है कि यह फ़ाइल तब मौजूद है जब कोई उपयोगकर्ता एप्लिकेशन लोड करता है ताकि वे नहीं मिलने पर 'सॉफ्ट लैंडिंग' का अनुभव कर सकें। यदि यह मौजूद नहीं है, और कोड चलता है तो त्रुटियां होंगी।
साथ ही, उपयोगकर्ता के पास सही .Net Framework संस्करण स्थापित होना चाहिए। भले ही उपयोगकर्ता के पास बाद का संस्करण हो, V3.5 स्थापित होना चाहिए अन्यथा आपका एप्लिकेशन काम नहीं करेगा
एक ऐरे सूची वस्तु का दायरा
कार्यक्षेत्र के संदर्भ में, ऐरे लिस्ट ऑब्जेक्ट केवल कार्यपुस्तिका के खुले होने पर ही उपलब्ध होता है। कार्यपुस्तिका सहेजे जाने पर यह सहेजा नहीं जाता है। यदि कार्यपुस्तिका को फिर से खोला जाता है तो Array List ऑब्जेक्ट को VBA कोड का उपयोग करके फिर से बनाने की आवश्यकता होती है।
यदि आप चाहते हैं कि आपकी ऐरे सूची आपके कोड मॉड्यूल में सभी कोड के लिए उपलब्ध हो, तो आपको मॉड्यूल विंडो के शीर्ष पर डिक्लेयर अनुभाग में ऐरे सूची ऑब्जेक्ट को घोषित करने की आवश्यकता है
यह सुनिश्चित करेगा कि उस मॉड्यूल के भीतर आपका सभी कोड ऐरे सूची तक पहुंच सकता है। यदि आप चाहते हैं कि आपकी कार्यपुस्तिका में कोई मॉड्यूल ऐरे लिस्ट ऑब्जेक्ट तक पहुंचें, तो इसे वैश्विक ऑब्जेक्ट के रूप में परिभाषित करें
1 | नई ArrayList के रूप में वैश्विक MyCollection |
आपकी सरणी सूची से पॉप्युलेट करना और पढ़ना
सबसे बुनियादी क्रिया जो आप करना चाहते हैं वह है एक सरणी सूची बनाना, उसमें कुछ डेटा डालना और फिर साबित करना कि डेटा को पढ़ा जा सकता है। इस आलेख के सभी कोड उदाहरण मानते हैं कि आप अर्ली बाइंडिंग का उपयोग कर रहे हैं, और ऊपर वर्णित अनुसार VBA संदर्भों में 'mscorlib.tlb' जोड़ा है।
123456789101112 | उप ArrayListExample ()'नई सरणी सूची वस्तु बनाएँ'नई ArrayList के रूप में मंद MyList'सूची में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'मानों को साबित करने के लिए सरणी सूची के माध्यम से पुनरावृति'N = 0 के लिए MyList.Count - 1 . के लिएMsgBox MyList(N)अगला नहींअंत उप |
यह उदाहरण एक नया ArrayList ऑब्जेक्ट बनाता है, इसे 3 आइटम के साथ पॉप्युलेट करता है, और प्रत्येक आइटम को प्रदर्शित करने वाली सूची के माध्यम से पुनरावृत्त करता है।
ध्यान दें कि ArrayList इंडेक्स 0 से शुरू होता है, 1 से नहीं, इसलिए आपको काउंट वैल्यू से 1 घटाना होगा
आप मूल्यों को पढ़ने के लिए 'फॉर… प्रत्येक' लूप का भी उपयोग कर सकते हैं:
123456789101112 | उप ArrayListExample ()'नई सरणी सूची वस्तु बनाएँ'नई ArrayList के रूप में मंद MyList'सूची में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'मानों को साबित करने के लिए सरणी सूची के माध्यम से पुनरावृति'MyList में प्रत्येक I के लिएसंदेशबॉक्स Iअगला मैंअंत उप |
एक ऐरे सूची में आइटम संपादित करना और बदलना
एक संग्रह पर एक ऐरे सूची का एक प्रमुख लाभ यह है कि सूची में आइटम को संपादित किया जा सकता है और आपके कोड में बदला जा सकता है। संग्रह वस्तु केवल पढ़ी जाती है जबकि ऐरे सूची वस्तु को पढ़ा / लिखा जाता है
123456789101112131415 | उप ArrayListExample ()'नई सरणी सूची वस्तु बनाएँ'नई ArrayList के रूप में मंद MyList'सूची में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'आइटम 1' को 'आइटम 2' से 'परिवर्तित' में बदलेंMyList(1) = "बदला हुआ"'परिवर्तन कार्य सिद्ध करने के लिए सरणी सूची के माध्यम से पुनरावृति करें'MyList में प्रत्येक I के लिए'आइटम का नाम प्रदर्शित करें'संदेशबॉक्स Iअगला मैंअंत उप |
इस उदाहरण में, दूसरा आइटम, 'आइटम 2' को 'चेंज्ड' मान में बदल दिया गया है (याद रखें कि इंडेक्स 0 से शुरू होता है)। जब कोड के अंत में पुनरावृत्ति चलती है, तो नया मान प्रदर्शित होगा
किसी सरणी सूची में मानों की एक सरणी जोड़ना
आप किसी कार्यपत्रक पर इन मानों की सूची या सेल मानों के संदर्भ वाली सरणी का उपयोग करके अपनी सरणी सूची में मान दर्ज कर सकते हैं
123456789101112131415161718 | उप AddArrayExample ()'ऐरे लिस्ट ऑब्जेक्ट बनाएं'नई ArrayList के रूप में मंद MyList'सरणी मानों के माध्यम से उन्हें सरणी सूची में जोड़कर पुनरावृति करें'प्रत्येक वी इन ऐरे ("ए 1", "ए 2", "ए 3") के लिए'सूची में प्रत्येक सरणी मान जोड़ें'MyList.Add vअगला'सरणी मानों के माध्यम से पुनरावृति वर्कशीट संदर्भों के साथ उन्हें सरणी सूची में जोड़कर'प्रत्येक वी इन ऐरे के लिए (रेंज ("ए 5")। वैल्यू, रेंज ("ए 6")। वैल्यू)MyList.Add vअगला'मानों को साबित करने के लिए सरणी सूची के माध्यम से पुनरावृति'N = 0 के लिए MyList.Count - 1 . के लिए'प्रदर्शन सूची आइटम'MsgBox MyList.Item(N)अगला नहींअंत उप |
एक ऐरे सूची से वस्तुओं की एक श्रृंखला को पढ़ना/पुनर्प्राप्त करना
किसी ऐरे सूची पर GetRange पद्धति का उपयोग करके, आप पुनर्प्राप्त किए जाने वाले क्रमागत आइटमों के रेज को निर्दिष्ट कर सकते हैं। आवश्यक दो पैरामीटर प्रारंभिक सूचकांक स्थिति और पुनर्प्राप्त की जाने वाली वस्तुओं की संख्या हैं। कोड आइटम के उप सेट के साथ दूसरी ऐरे सूची ऑब्जेक्ट को पॉप्युलेट करता है जिसे अलग से पढ़ा जा सकता है।
123456789101112131415161718 | उप रीडरेंज उदाहरण ()'वस्तुओं को परिभाषित करें'मंद MyList नई ArrayList के रूप में, MyList1 वस्तु के रूप में'माईलिस्ट' ऑब्जेक्ट में आइटम जोड़ेंMyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item6"MyList.Add "Item4"MyList.Add "आइटम7"'माईलिस्ट' में 4 आइटम कैप्चर करें, जो इंडेक्स पोजीशन 2 से शुरू होता हैMyList1 = MyList.GetRange(2, 4) सेट करें'वस्तुओं के उप सेट को प्रदर्शित करने के लिए' MyList1 'ऑब्जेक्ट के माध्यम से पुनरावृति करें'MyList1 में प्रत्येक I के लिए'आइटम का नाम प्रदर्शित करें'संदेशबॉक्स Iअगला मैंअंत उप |
एक सरणी सूची के भीतर आइटम खोजना
आप 'Contains' पद्धति का उपयोग करके जांच सकते हैं कि कोई नामित आइटम आपकी सूची में है या नहीं। यह सही या गलत लौटाएगा
1 | MsgBox MyList.Contains("Item2") |
आप 'इंडेक्सऑफ' पद्धति का उपयोग करके वास्तविक सूचकांक स्थिति भी पा सकते हैं। आपको खोज के लिए प्रारंभ अनुक्रमणिका निर्दिष्ट करने की आवश्यकता है (आमतौर पर 0)। वापसी मूल्य पाए गए आइटम के पहले उदाहरण का सूचकांक है। फिर आप कई डुप्लिकेट मान होने पर आगे के उदाहरण खोजने के लिए शुरुआती बिंदु को अगले इंडेक्स मान में बदलने के लिए लूप का उपयोग कर सकते हैं।
यदि मान नहीं मिलता है तो -1 का मान लौटा दिया जाता है
यह उदाहरण सभी डुप्लिकेट आइटमों की स्थिति खोजने के लिए 'Contains', आइटम नहीं मिला, और सरणी सूची के माध्यम से लूपिंग का उपयोग करके प्रदर्शित करता है:
1234567891011121314151617181920212223242526 | उप खोज सूची उदाहरण ()'सरणी सूची और चर परिभाषित करें'नई ऐरेलिस्ट के रूप में मंद MyList, पूर्णांक के रूप में SP, पूर्णांक के रूप में स्थिति'डुप्लिकेट सहित नए आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item1"'आइटम 2' के सूची में होने के लिए परीक्षण - सही हैMsgBox MyList.Contains("Item2")'गैर-मौजूद मूल्य का सूचकांक प्राप्त करें - रिटर्न -1MsgBox MyList.IndexOf ("आइटम", 0)'खोज के लिए प्रारंभ स्थिति को शून्य पर सेट करें'सपा = 0'आइटम 1' के सभी पदों को प्राप्त करने के लिए सूची के माध्यम से पुनरावृतिकरना'Sp' चर में स्थिति के आधार पर 'अगले 'आइटम 1' की अनुक्रमणिका स्थिति प्राप्त करेंस्थिति = MyList.IndexOf ("आइटम 1", सपा)'यदि 'आइटम 1' का कोई और उदाहरण नहीं मिलता है तो लूप से बाहर निकलेंअगर स्थिति = -1 तो बाहर निकलें Do'अगला उदाहरण मिला और सूचकांक स्थिति प्रदर्शित करें'MsgBox MyList(Pos) & "index" & Pos'पिछले मिले इंडेक्स वैल्यू में 1 जोड़ें - यह अब अगली खोज के लिए नई शुरुआत की स्थिति बन जाती है'सपा = स्थिति + 1कुंडलीअंत उप |
ध्यान दें कि उपयोग किया गया खोज टेक्स्ट केस संवेदी है और वाइल्ड कार्ड स्वीकार नहीं किए जाते हैं।
आइटम सम्मिलित करना और हटाना
यदि आप सूची के अंत में अपने आइटम नहीं जोड़ना चाहते हैं, तो आप उन्हें एक विशेष इंडेक्स स्थिति में सम्मिलित कर सकते हैं ताकि नया आइटम सूची के बीच में हो। बाद की वस्तुओं के लिए सूचकांक संख्या स्वचालित रूप से समायोजित हो जाएगी।
123456789101112131415 | उप सम्मिलित उदाहरण ()'सरणी सूची वस्तु को परिभाषित करें'नई ArrayList के रूप में मंद MyList'सरणी सूची में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item1"इंडेक्स पोजीशन 2 पर 'आइटम 6' डालेंMyList.Insert 2, "आइटम6"'नया क्रम और अनुक्रमणिका स्थिति दिखाने के लिए सरणी सूची में आइटम के माध्यम से पुनरावृति करें'N = 0 के लिए MyList.Count - 1 . के लिएMsgBox MyList(N) और "इंडेक्स" और Nअगला नहींअंत उप |
इस उदाहरण में, 'आइटम 6' को इंडेक्स पोजीशन 2 पर लिस्ट में जोड़ा जाता है, इसलिए 'आइटम 3' जो इंडेक्स पोजिशन 2 पर था, अब इंडेक्स पोजिशन 3 पर चला जाता है।
'निकालें' पद्धति का उपयोग करके एक व्यक्तिगत वस्तु को हटाया जा सकता है।
1 | MyList.Remove "आइटम" |
ध्यान दें कि यदि आइटम का नाम नहीं मिलता है तो कोई त्रुटि उत्पन्न नहीं होती है। बाद के सभी सूचकांकों को हटाने के अनुरूप बदल दिया जाएगा।
यदि आप आइटम की अनुक्रमणिका स्थिति जानते हैं तो आप 'RemoveAt' विधि का उपयोग कर सकते हैं उदा।
1 | MyList.RemoveAt 2 |
ध्यान दें कि यदि दी गई अनुक्रमणिका स्थिति सरणी सूची में आइटमों की संख्या से अधिक है, तो एक त्रुटि लौटा दी जाएगी।
आप 'RemoveRange' पद्धति का उपयोग करके सूची से कई मानों को हटा सकते हैं। पैरामीटर प्रारंभिक अनुक्रमणिका हैं और फिर निकालने के लिए वस्तुओं की संख्या उदा।
1 | MyList.RemoveRange 3, 2 |
ध्यान दें कि यदि प्रारंभ मान से ऑफसेट किए गए आइटमों की संख्या सरणी सूची में आइटम्स की संख्या से अधिक है, तो आपको अपने कोड में एक त्रुटि मिलेगी।
'RemoveAt' और 'RemoveRange' दोनों विधियों में, कुछ कोड को यह जांचने की सलाह दी जाएगी कि क्या निर्दिष्ट सूचकांक संख्या किसी भी संभावित त्रुटियों को फंसाने के लिए सरणी सूची में आइटम की कुल संख्या से अधिक है। 'गणना' संपत्ति सरणी सूची में कुल आइटम देगी।
12345678910111213141516171819202122232425 | उप निकालें उदाहरण ()'सरणी सूची वस्तु को परिभाषित करें'नई ArrayList के रूप में मंद MyList'सरणी सूची में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"MyList.Add "Item1"MyList.Add "Item4"MyList.Add "Item5"इंडेक्स पोजीशन 2 पर 'आइटम 6' डालेंMyList.Insert 2, "आइटम6"'आइटम 2' हटाएंMyList.Remove "आइटम 2"'आइटम निकालें' - यह सरणी सूची में मौजूद नहीं है लेकिन त्रुटि नहीं हैMyList.Remove "आइटम"'आइटम को इंडेक्स पोजीशन 2 पर हटाएं'MyList.RemoveAt 2'सूचकांक स्थिति 2 से शुरू होने वाले लगातार 2 आइटम निकालें'MyList.RemoveRange 3, 2'क्या बचा है और यह अब किस सूचकांक स्थिति में है, यह दिखाने के लिए सरणी सूची के माध्यम से पुनरावृति करें'N = 0 के लिए MyList.Count - 1 . के लिएMsgBox MyList(N) और "इंडेक्स" और Nअगला नहींअंत उप |
ध्यान दें कि यदि आप किसी विशिष्ट स्थान पर किसी आइटम को निकालने के लिए 'RemoveAt' का उपयोग कर रहे हैं, तो जैसे ही उस आइटम को हटा दिया जाता है, उसके बाद के सभी इंडेक्स पोजीशन बदल जाते हैं। यदि आपके पास अनुक्रमणिका स्थिति का उपयोग करते हुए कई निष्कासन हैं, तो एक अच्छा विचार यह है कि उच्चतम अनुक्रमणिका संख्या से प्रारंभ करें और शून्य की स्थिति में पीछे की ओर कदम रखें ताकि आप हमेशा सही आइटम को हटाते रहें। इस तरह आपको समस्या नहीं होगी
एक ऐरे सूची को छाँटना
संग्रह पर एक और बड़ा लाभ यह है कि आप वस्तुओं को आरोही या अवरोही क्रम में क्रमबद्ध कर सकते हैं।
एक्सेल वीबीए में सॉर्टिंग विधि के साथ ऐरे लिस्ट ऑब्जेक्ट एकमात्र ऑब्जेक्ट है। छँटाई विधि बहुत तेज़ है और यह एक ऐरे सूची का उपयोग करने के लिए एक महत्वपूर्ण विचार हो सकता है।
संग्रह वस्तु में, सभी वस्तुओं को क्रमबद्ध करने के लिए कुछ 'आउट ऑफ द बॉक्स' सोच की आवश्यकता थी, लेकिन एक सरणी सूची के साथ, यह बहुत आसान है।
'सॉर्ट' विधि आरोही क्रम में सॉर्ट करती है, और 'रिवर्स' विधि अवरोही क्रम में सॉर्ट करती है।
12345678910111213141516171819202122 | उप ArrayListExample ()'ऐरे लिस्ट ऑब्जेक्ट बनाएं'नई ArrayList के रूप में मंद MyList'एक गैर-क्रमबद्ध क्रम में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item3"MyList.Add "Item2"'वस्तुओं को आरोही क्रम में क्रमबद्ध करें'MyList.Sort'आरोही क्रम दिखाने के लिए वस्तुओं के माध्यम से पुनरावृति'MyList में प्रत्येक I के लिए'आइटम का नाम प्रदर्शित करें'संदेशबॉक्स Iअगला मैं'वस्तुओं को अवरोही क्रम में क्रमबद्ध करें'MyList.Reverse'घटते क्रम को दिखाने के लिए वस्तुओं के माध्यम से पुनरावृति'MyList में प्रत्येक I के लिए'आइटम का नाम प्रदर्शित करें'संदेशबॉक्स Iअगला मैंअंत उप |
एक ऐरे सूची की क्लोनिंग
एक सरणी सूची में स्वयं का क्लोन या प्रतिलिपि बनाने की सुविधा होती है। यह तब उपयोगी होता है जब कोई उपयोगकर्ता फ़्रंट एंड और आपके VBA कोड का उपयोग करके आइटम में परिवर्तन करता है, लेकिन आपको बैकअप के रूप में आइटम की एक प्रति उनकी मूल स्थिति में रखने की आवश्यकता होती है।
यह उपयोगकर्ता को 'पूर्ववत करें' सुविधा प्रदान कर सकता है। हो सकता है कि उन्होंने परिवर्तन किए हों, और मूल सूची में वापस लौटना चाहते हों।
123456789101112131415 | उप क्लोन उदाहरण ()'दो वस्तुओं को परिभाषित करें - सरणी सूची और एक वस्तु'मंद MyList नई ArrayList के रूप में, MyList1 वस्तु के रूप में'पहली वस्तु को वस्तुओं से आबाद करें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'मेरी सूची को MyList1 में कॉपी करें'MyList1 सेट करें = MyList.Clone'क्लोनिंग साबित करने के लिए MyList1 के माध्यम से पुनरावृति'MyList1 में प्रत्येक I के लिए'आइटम का नाम प्रदर्शित करें'संदेशबॉक्स Iअगला मैंअंत उप |
'MyList1' में अब उसी क्रम में 'MyList' के सभी आइटम शामिल हैं
एक सूची ऐरे को एक पारंपरिक वीबीए ऐरे ऑब्जेक्ट में कॉपी करना
आप सरणी सूची को सामान्य VBA सरणी में कॉपी करने के लिए एक सरल विधि का उपयोग कर सकते हैं:
123456789101112131415 | उप ऐरे उदाहरण ()'सरणी सूची वस्तु और एक मानक सरणी वस्तु बनाएँ'डिम माईलिस्ट न्यू ऐरेलिस्ट के रूप में, न्यूएरे वैरिएंट के रूप में'वस्तुओं के साथ सरणी सूची पॉप्युलेट करें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'सरणी सूची को नए सरणी में कॉपी करें'न्यूअरे = MyList.ToArray'नई सरणी के माध्यम से पुनरावृति - ध्यान दें कि सरणी सूची गणना अधिकतम सूचकांक प्रदान करती हैN = 0 के लिए MyList.Count - 1 . के लिए'आइटम का नाम प्रदर्शित करें'संदेशबॉक्स न्यूअरे (एन)अगला नहींअंत उप |
वर्कशीट रेंज में लिस्ट ऐरे को कॉपी करना
आप सरणी सूची के माध्यम से पुनरावृति करने की आवश्यकता के बिना अपनी सरणी सूची को एक विशिष्ट कार्यपत्रक और सेल संदर्भ में कॉपी कर सकते हैं। आपको केवल पहला सेल संदर्भ निर्दिष्ट करने की आवश्यकता है
123456789101112131415 | उप श्रेणी उदाहरण ()'नई सरणी सूची वस्तु बनाएँ'नई ArrayList के रूप में मंद MyList'सूची में आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'लक्ष्य पत्रक साफ़ करें'शीट्स ("शीट 1")। यूज्ड रेंज। क्लियर'आइटम को एक पंक्ति में कॉपी करें'शीट्स ("शीट 1")। रेंज ("ए 1")। आकार बदलें (1, माईलिस्ट। गणना)। मान = MyList.toArray'आइटम को एक कॉलम में कॉपी करें'शीट्स ("शीट 1")। रेंज ("ए 5")। आकार बदलें (माईलिस्ट। गणना, 1)। मान = _वर्कशीटफंक्शन। ट्रांसफर (MyList.toArray)अंत उप |
एक सरणी सूची से सभी आइटम खाली करें
सरणी सूची को पूरी तरह से साफ़ करने के लिए एक सरल कार्य (साफ़) है
1234567891011121314 | उप ClearListExample ()'सरणी सूची वस्तु बनाएँ'नई ArrayList के रूप में मंद MyList'नए आइटम जोड़ें'MyList.Add "Item1"MyList.Add "Item2"MyList.Add "Item3"'वस्तुओं की संख्या दिखाएं'MsgBox MyList.Count'सभी आइटम साफ़ करें'MyList.Clear'यह साबित करने के लिए आइटमों की संख्या दिखाएं कि स्पष्ट काम किया है'MsgBox MyList.Countअंत उप |
यह उदाहरण किसी सरणी सूची में आइटम बनाता है और फिर सरणी सूची को साफ़ करता है। संदेश बॉक्स सरणी सूची में आइटमों की संख्या से पहले और बाद में साबित होते हैं।
एक्सेल VBA के लिए ऐरे लिस्ट मेथड्स सारांश
टास्क | मापदंडों | उदाहरण |
आइटम जोड़ें / संपादित करें | मूल्य | MyList.Add "Item1" |
MyList(4)= "आइटम2" | ||
एक सरणी सूची क्लोन करें | कोई नहीं | मंद MyList वस्तु के रूप में |
MyList2 सेट करें = MyList.Clone | ||
सरणी में कॉपी करें | कोई नहीं | डिम मायएरे वैरिएंट के रूप में |
MyArray = MyList.ToArray | ||
वर्कशीट रेंज में कॉपी करें (पंक्ति) | कोई नहीं | शीट्स ("शीट 1")। रेंज ("ए 1")। आकार बदलें (1, माईलिस्ट। गणना)। मान = MyList.ToArray |
वर्कशीट रेंज (कॉलम) में कॉपी करें | कोई नहीं | शीट्स ("शीट 1")। रेंज ("ए 3")। आकार बदलें (माईलिस्ट। काउंट, 1)। वैल्यू = वर्कशीटफंक्शन। ट्रांसफर (माईलिस्ट। टूएरे) |
बनाएं | "System.Collections.ArrayList" | मंद MyList वस्तु के रूप में |
MyList सेट करें = CreateObject ("System.Collections.ArrayList") | ||
प्रचार | एन/ए | मंद MyList वस्तु के रूप में |
खोजें / जांचें कि क्या आइटम मौजूद है | खोजने के लिए आइटम | MyList.Contains ("आइटम 2") |
ArrayList में किसी आइटम की स्थिति का पता लगाएं | 1. खोजने के लिए आइटम। | डिम इंडेक्सनहीं जितना लंबा हो |
2. खोज शुरू करने की स्थिति। | इंडेक्सनो = माईलिस्ट। इंडेक्सऑफ ("आइटम 3", 0) | |
इंडेक्सनो = माईलिस्ट। इंडेक्सऑफ ("आइटम 5", 3) | ||
वस्तुओं की संख्या प्राप्त करें | कोई नहीं | MsgBox MyList.Count |
आइटम डालें | 1. सूचकांक - डालने की स्थिति। | MyList.Insert 0, "आइटम 5" |
2 मूल्य - वस्तु या मूल्य डालने के लिए। | MyList.Insert 4, "आइटम7" | |
आइटम पढ़ें | सूचकांक - लंबा पूर्णांक | MsgBox MyList.Item(0) |
MsgBox MyList.Item(4) | ||
पिछली बार जोड़ा गया आइटम पढ़ें | सूचकांक - लंबा पूर्णांक | MsgBox MyList.Item(list.Count-1) |
पहले जोड़ा गया आइटम पढ़ें | सूचकांक - लंबा पूर्णांक | MsgBox MyList.Item(0) |
सभी आइटम पढ़ें (प्रत्येक के लिए) | एन/ए | डिम एलिमेंट वैरिएंट के रूप में |
MyList में प्रत्येक तत्व के लिए | ||
संदेशबॉक्स तत्व | ||
अगला तत्व | ||
सभी आइटम पढ़ें (के लिए) | सूचकांक - लंबा पूर्णांक | डिम आई ऐज़ लॉन्ग |
I = 0 के लिए MyList.Count - 1 . के लिए | ||
संदेशबॉक्स मैं | ||
अगला मैं | ||
सभी आइटम हटाएं | कोई नहीं | MyList.Clear |
आइटम को स्थिति में निकालें | सूचकांक स्थिति जहां आइटम है | MyList.Remove5 |
नाम से आइटम हटाएं | ArrayList से निकालने के लिए आइटम | MyList.Remove “Item3” |
आइटम की एक श्रृंखला निकालें | 1. सूचकांक - प्रारंभिक स्थिति। | MyList.RemoveRange 4,3 |
2. गणना - हटाने के लिए वस्तुओं की संख्या। | ||
अवरोही क्रम में क्रमबद्ध करें | कोई नहीं | MyList.Reverse |
आरोही क्रम में क्रमबद्ध करें | गैर | MyList.Sort |