अनुप्रयोग के लिए Visual Basic में Arrays

अनुप्रयोग के लिए Visual Basic में सरणियाँ ऐसी संरचनाएँ हैं जो आम तौर पर एक ही प्रकार के संबंधित चरों के सेट को संग्रहीत करती हैं। ऐरे प्रविष्टियों को उनके संख्यात्मक सूचकांक द्वारा एक्सेस किया जाता है।

उदाहरण के लिए, 20 लोगों की एक टीम है जिनके नाम बाद में VBA कोड में उपयोग के लिए सहेजे जाने की आवश्यकता है। प्रत्येक नाम को धारण करने के लिए केवल 20 चर घोषित कर सकते हैं, जैसे:

मंद Team_Member1 स्ट्रिंग के रूप में Dim Team_Member2 स्ट्रिंग के रूप में ... मंद Team_Member20 स्ट्रिंग के रूप में

लेकिन आप अधिक सरल और अधिक व्यवस्थित तरीके का उपयोग कर सकते हैं - टीम के सदस्यों के नामों की एक सूची को 20 चरों की एक सरणी में संग्रहीत करें जैसे तार:

मंद टीम_सदस्य(1 से 20) स्ट्रिंग के रूप में

ऊपर दिखाई गई पंक्ति में, हमने एक सरणी घोषित की है। आइए अब इसके प्रत्येक तत्व के लिए इस तरह से एक मान लिखें:

Team_Members(1) = "जॉन स्मिथ"

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

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

i = 1 से 20 सेल (i,1) के लिए। मान = Team_Members(i) अगला i

जाहिर है, 20 नामों को संग्रहीत करने वाले सरणी के साथ काम करना 20 अलग-अलग चर का उपयोग करने से बहुत कम बोझिल और अधिक सटीक है। लेकिन क्या होगा अगर ये नाम 20 नहीं, बल्कि 1000 हैं? और अगर, इसके अलावा, उपनाम और संरक्षक को अलग-अलग रखना आवश्यक है ?! यह स्पष्ट है कि एक सरणी की सहायता के बिना वीबीए कोड में इतनी मात्रा में डेटा को संभालना जल्द ही पूरी तरह असंभव हो जाएगा।

एक्सेल विजुअल बेसिक में बहुआयामी सरणियाँ

ऊपर चर्चा की गई Visual Basic सरणियों को एक-आयामी माना जाता है। इसका मतलब है कि वे नामों की एक साधारण सूची संग्रहीत करते हैं। हालाँकि, सरणियों के कई आयाम हो सकते हैं। उदाहरण के लिए, दो-आयामी सरणी की तुलना मानों के ग्रिड से की जा सकती है।

मान लें कि आप 5 अलग-अलग टीमों के लिए जनवरी के दैनिक बिक्री के आंकड़े सहेजना चाहते हैं। इसके लिए दो-आयामी सरणी की आवश्यकता होगी जिसमें 5 दिनों के लिए मीट्रिक के 31 सेट शामिल हों। आइए इस तरह एक सरणी घोषित करें:

Dim Jan_Sales_आंकड़े (1 से 31, 1 से 5) मुद्रा के रूप में

सरणी तत्वों तक पहुँचने के लिए जनवरी_बिक्री_आंकड़े, आपको महीने के दिन और कमांड संख्या को इंगित करने वाले दो अनुक्रमितों का उपयोग करने की आवश्यकता है। उदाहरण के लिए, बिक्री के आंकड़ों वाले तत्व का पता 2-ओह के लिए टीमें 15 वें जनवरी इस तरह लिखा जाएगा:

जनवरी_बिक्री_आंकड़े(15, 2)

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

एक्सेल विजुअल बेसिक में एरेज़ घोषित करना

इससे पहले इस लेख में, हमने पहले ही VBA में सरणियों को घोषित करने के कई उदाहरणों को देखा था, लेकिन यह विषय करीब से देखने योग्य है। जैसा कि दिखाया गया है, एक-आयामी सरणी को इस तरह घोषित किया जा सकता है:

मंद टीम_सदस्य(1 से 20) स्ट्रिंग के रूप में

इस तरह की घोषणा VBA कंपाइलर को बताती है कि array टीम के सदस्य इसमें 20 वेरिएबल्स होते हैं जिन्हें 1 से 20 तक इंडेक्स में एक्सेस किया जा सकता है। हालाँकि, हम अपने एरे वेरिएबल्स को 0 से 19 तक नंबर देने के बारे में सोच सकते हैं, इस स्थिति में एरे को इस तरह घोषित किया जाना चाहिए:

मंद टीम_सदस्य(0 से 19) स्ट्रिंग के रूप में

वास्तव में, डिफ़ॉल्ट रूप से, सरणी तत्वों की संख्या 0 से शुरू होती है, और सरणी घोषणा में, प्रारंभिक सूचकांक बिल्कुल भी निर्दिष्ट नहीं किया जा सकता है, जैसे:

मंद टीम_सदस्य(19) स्ट्रिंग के रूप में

वीबीए कंपाइलर इस तरह की प्रविष्टि को 20 से 0 19 तक इंडेक्स के साथ XNUMX तत्वों की एक सरणी घोषित करने के रूप में मानेगा।

बहुआयामी Visual Basic सरणियों की घोषणा करते समय समान नियम लागू होते हैं। जैसा कि पहले से ही एक उदाहरण में दिखाया गया है, दो-आयामी सरणी घोषित करते समय, इसके आयामों के सूचकांक अल्पविराम से अलग होते हैं:

Dim Jan_Sales_आंकड़े (1 से 31, 1 से 5) मुद्रा के रूप में

हालांकि, यदि आप सरणी के दोनों आयामों के लिए प्रारंभिक अनुक्रमणिका निर्दिष्ट नहीं करते हैं और इसे इस तरह घोषित करते हैं:

Dim Jan_Sales_आंकड़े (31, 5) मुद्रा के रूप में

तब इस प्रविष्टि को दो-आयामी सरणी के रूप में माना जाएगा, जिसके पहले आयाम में 32 से 0 तक के सूचकांक वाले 31 तत्व होते हैं, और सरणी के दूसरे आयाम में 6 से 0 तक के सूचकांक वाले 5 तत्व होते हैं।

गतिशील सरणियाँ

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

खाली कोष्ठक के साथ एक गतिशील सरणी घोषित की जाती है, जैसे:

मंद Team_Members () स्ट्रिंग के रूप में

इसके बाद, आपको अभिव्यक्ति का उपयोग करके कोड निष्पादन के दौरान सरणी के आयाम को घोषित करने की आवश्यकता होगी रेडिम:

ReDim Team_Members(1 से 20)

और यदि कोड के निष्पादन के दौरान आपको फिर से सरणी का आकार बदलने की आवश्यकता है, तो आप फिर से ReDim अभिव्यक्ति का उपयोग कर सकते हैं:

अगर Team_Size > 20 फिर ReDim Team_Members(1 To Team_Size) अंत यदि

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

अगर Team_Size > 20 तो ReDim Preserve Team_Members(1 To Team_Size) अंत यदि

दुर्भाग्य से कीवर्ड रक्षित केवल एक सरणी आयाम की ऊपरी सीमा को बदलने के लिए उपयोग किया जा सकता है। किसी सरणी की निचली सीमा को इस तरह से नहीं बदला जा सकता है। साथ ही, यदि सरणी के कई आयाम हैं, तो कीवर्ड का उपयोग करना रक्षित, केवल सरणी के अंतिम आयाम का आकार बदला जा सकता है।

एक जवाब लिखें