अनुप्रयोगको लागि भिजुअल बेसिकमा एरेहरू

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

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

Dim Team_Member1 String को रूपमा Dim Team_Member2 String को रूपमा ... Dim Team_Member20 String को रूपमा

तर तपाईले धेरै सरल र अधिक संगठित तरिका प्रयोग गर्न सक्नुहुन्छ - 20 चरहरूको एर्रेमा टोली सदस्य नामहरूको सूची भण्डार गर्नुहोस् जस्तै घागो:

Dim Team_Members(1 देखि 20) String को रूपमा

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

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

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

यसले कसरी काम गर्दछ तल एक कोड उदाहरणको साथ प्रदर्शन गरिएको छ जसले प्रत्येक टोली सदस्यको नाम क्रमिक रूपमा स्तम्भ कक्षहरूमा छाप्छ। A सक्रिय एक्सेल कार्यपत्र।

i = 1 देखि 20 कक्षहरू (i,1) को लागि। मान = Team_Members(i) अर्को i

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

एक्सेल भिजुअल बेसिकमा बहुआयामी एरेहरू

माथि छलफल गरिएका भिजुअल बेसिक एरेहरूलाई एक-आयामी मानिन्छ। यसको मतलब तिनीहरू नामहरूको सरल सूची भण्डार गर्छन्। यद्यपि, arrayहरूमा बहु आयामहरू हुन सक्छन्। उदाहरणका लागि, दुई-आयामी एरे मानहरूको ग्रिडसँग तुलना गर्न सकिन्छ।

मानौं तपाईं 5 विभिन्न टोलीहरूको लागि जनवरीको दैनिक बिक्री तथ्याङ्कहरू बचत गर्न चाहनुहुन्छ। यसका लागि ३१ दिनको लागि मेट्रिक्सका ५ सेटहरू समावेश भएको दुई-आयामी एरे आवश्यक पर्दछ। यस प्रकारको एरे घोषणा गरौं:

Dim Jan_Sales_Figures(1 to 31, 1 to 5) मुद्राको रूपमा

एरे तत्वहरू पहुँच गर्न Jan_Sales_Figures, तपाईंले महिनाको दिन र आदेश नम्बर संकेत गर्ने दुई अनुक्रमणिकाहरू प्रयोग गर्न आवश्यक छ। उदाहरण को लागी, को लागी बिक्री आंकडा समावेश एक तत्व को ठेगाना २-ओह लागि टोलीहरू १ th औं जनवरी यसरी लेखिनेछ:

Jan_Sales_Figures(15, 2)

त्यसै गरी, तपाइँ 3 वा बढी आयामहरूसँग एरे घोषणा गर्न सक्नुहुन्छ - केवल एरे घोषणामा थप आयामहरू थप्नुहोस् र यस एरेका तत्वहरूलाई सन्दर्भ गर्न थप सूचकहरू प्रयोग गर्नुहोस्।

एक्सेल भिजुअल बेसिकमा एरेहरू घोषणा गर्दै

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

Dim Team_Members(1 देखि 20) String को रूपमा

यस्तो घोषणाले VBA कम्पाइलरलाई array बताउँछ टोली_सदस्यहरू 20 देखि 1 सम्मको सूचकहरूमा पहुँच गर्न सकिने 20 चरहरू समावेश हुन्छन्। यद्यपि, हामीले हाम्रो array चरहरूलाई 0 देखि 19 सम्म नम्बर गर्ने बारे सोच्न सक्छौं, जसमा array लाई यसरी घोषणा गर्नुपर्छ:

Dim Team_Members(0 देखि 19) String को रूपमा

वास्तवमा, पूर्वनिर्धारित रूपमा, एरे एलिमेन्टहरूको संख्या ० बाट सुरु हुन्छ, र एरे घोषणामा, प्रारम्भिक अनुक्रमणिका सबै निर्दिष्ट गर्न सकिँदैन, जस्तै:

Dim Team_Members(19) String को रूपमा

VBA कम्पाइलरले यस्तो प्रविष्टिलाई 20 देखि 0 सम्मका सूचकाङ्कहरूसँग 19 तत्वहरूको एर्रे घोषणा गर्ने रूपमा व्यवहार गर्नेछ।

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

Dim Jan_Sales_Figures(1 to 31, 1 to 5) मुद्राको रूपमा

यद्यपि, यदि तपाइँ array को दुबै आयामहरूको लागि सुरूवात अनुक्रमणिका निर्दिष्ट गर्नुहुन्न र यसलाई यसरी घोषणा गर्नुहोस्:

Dim Jan_Sales_Figures(31, 5) मुद्राको रूपमा

त्यसपछि यो प्रविष्टिलाई दुई-आयामी एरेको रूपमा मानिनेछ, जसको पहिलो आयाममा ० देखि ३१ सम्मको सूचकांकसहित ३२ तत्वहरू छन्, र एरेको दोस्रो आयाममा ० देखि ५ सम्मका सूचकाङ्कहरू भएका ६ तत्वहरू छन्।

गतिशील arrays

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

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

Dim Team_Members() String को रूपमा

अर्को, तपाईंले अभिव्यक्ति प्रयोग गरेर कोड कार्यान्वयनको क्रममा एरेको आयाम घोषणा गर्न आवश्यक पर्दछ रेडिम:

ReDim Team_Members(1 देखि 20 सम्म)

र यदि कोडको कार्यान्वयनको क्रममा तपाईले एरेको साइज फेरि परिवर्तन गर्न आवश्यक छ भने, तपाईले पुन: प्रयोग गर्न सक्नुहुन्छ ReDim अभिव्यक्ति:

यदि Team_Size > 20 त्यसपछि टोली_सदस्यहरू पुन: डिम गर्नुहोस् (1 टोली_साइजमा) अन्त्य गर्नुहोस् यदि

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

यदि Team_Size > 20 त्यसपछि ReDim Preserve Team_Members(1 to team_size) End यदि

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

जवाफ छाड्नुस्