यह ट्यूटोरियल प्रदर्शित करेगा कि वीबीए में गतिशील सरणियों (रेडिम और रेडिम प्रिजर्व) का उपयोग कैसे करें।
गतिशील सरणी
गतिशील सरणियाँ वे सरणियाँ हैं जो आकार बदल सकती हैं (जैसा कि के विपरीत) स्थिर सरणियाँ, जो स्थिर हैं)।
गतिशील सरणी घोषित करने के लिए, आप सरणी घोषित करते हैं, लेकिन सरणी आकार को छोड़ दें:
1 | मंद strNames () स्ट्रिंग के रूप में |
फिर, इससे पहले कि आप अपने सरणी को मान निर्दिष्ट कर सकें, आपको सरणी को अपने इच्छित आकार में सेट करने के लिए ReDim Statement का उपयोग करना चाहिए:
1 | ReDim strNames(१ से ३) |
अब, जब भी आप अपने सरणी आकार को बदलना चाहते हैं, तो बस ReDim (या ReDim Preserve जैसा कि हम नीचे सीखेंगे) का उपयोग करें।
डायनामिक वेरिएंट एरेज़
नोट: वैरिएंट एरे थोड़े अलग हैं। भिन्न सरणियों के साथ, आपको मान निर्दिष्ट करने से पहले सरणी आकार को ReDim के साथ सेट करने की आवश्यकता नहीं है।
12345678 | उप टेस्टअरे ()'चर घोषित करें'Dim varNames () वैरिएंट के रूप में'सरणी को पॉप्युलेट करें'varNames () = ऐरे ("फ्रेड", "विल्मा", "बार्नी", "बेट्टी")'मान लौटाएं'MsgBox Join(varNames, ",")अंत उप |
रेडिम बनाम रेडिम प्रिजर्व
NS रेडिम कथन एक सरणी का आकार बदलता है, क्लियरिंग सभी मौजूदा मूल्य।
NS रेडिम प्रिजर्व कथन एक सरणी का आकार बदलता है, रखना ("संरक्षण") सभी मौजूदा मान।
रेडिम का उपयोग करना
व्यवहार में, ReDim के साथ एक सरणी का आकार बदलना इस तरह दिखता है:
123456789101112 | उप टेस्टरेडिम ()'स्ट्रिंग सरणी घोषित करें'मंद strNames () स्ट्रिंग के रूप में'3 मान रखने में सक्षम होने के लिए स्ट्रिंग सरणी का आकार बदलें'ReDim strNames(१ से ३)'सरणी को 3 नामों से आबाद करें'strNames(1) = "मेल"strNames(2) = "स्टीव"strNames(3) = "बॉब"'तत्काल विंडो में परिणाम दिखाएं'डीबग.प्रिंट शामिल हों (strNames, vbCrLf)अंत उप |
रेडिम प्रिजर्व का उपयोग करना
इस उदाहरण में, हम प्रारंभिक गतिशील सरणी सेट करने के लिए ReDim का उपयोग करेंगे और फिर सरणी का आकार बदलने के लिए ReDim संरक्षित करेंगे, रखना मूल मान:
1234567891011121314151617 | उप टेस्टरेडिम ()'स्ट्रिंग सरणी घोषित करें'मंद strNames () स्ट्रिंग के रूप में'3 मान रखने में सक्षम होने के लिए स्ट्रिंग सरणी का आकार बदलें'ReDim strNames(१ से ३)'सरणी को पॉप्युलेट करें'strNames(1) = "मेल"strNames(2) = "स्टीव"strNames(3) = "बॉब"'तत्काल विंडो में परिणाम दिखाएं'डीबग.प्रिंट शामिल हों (strNames, vbCrLf)'रिडीम करें लेकिन डेटा को सुरक्षित रखें'ReDim संरक्षित strNames(१ से ४)strNames(4) = "फ्रेड"'तत्काल विंडो में परिणाम दिखाएं'डीबग.प्रिंट शामिल हों (strNames, vbCrLf)अंत उप |
यदि आप का उपयोग नहीं करते हैं रक्षित कथन, आप उस डेटा को खो देंगे जो पहले सरणी में था।
उपरोक्त तत्काल विंडो में, सरणी मेल, स्टीव और बॉब को आबाद करती है। जब इसे फिर से घोषित किया गया, तो यह उन मानों को हटा देता है और इसके बजाय 3 रिक्त मान और फिर मान 'फ्रेड' लौटाता है। यह के कारण है रक्षित बयान छोड़ा जा रहा है।