VBA ReDim - VBA ReDim परिरक्षण का उपयोग करते हुए डायनामिक एरे को संभालें

एक्सेल VBA ReDim स्टेटमेंट

VBA Redim स्टेटमेंट मंद स्टेटमेंट के समान है लेकिन अंतर यह है कि इसका उपयोग स्टोरेज स्पेस को स्टोर करने या आवंटित करने या स्टोरेज स्पेस को कम करने या एक वैरिएबल के साथ करने के लिए किया जाता है, अब स्टेटमेंट के साथ उपयोग किए जाने वाले दो महत्वपूर्ण पहलुओं को संरक्षित करना है, यदि इस कथन के साथ संरक्षण का उपयोग किया जाता है तो यह अलग आकार के साथ एक नया सरणी बनाता है और यदि इस कथन के साथ संरक्षित नहीं किया जाता है तो यह वर्तमान चर के सरणी आकार को बदल देता है।

Arrays VBA कोडिंग का एक महत्वपूर्ण हिस्सा हैं। सरणियों का उपयोग करते हुए, हम उसी चर में एक से अधिक मान संग्रहीत कर सकते हैं जिसे हमने परिभाषित किया है। जैसे हम “डिम” शब्द का उपयोग करते हुए वेरिएबल की घोषणा कैसे करते हैं, हमें “डिम” का भी उपयोग करके ऐरे नाम घोषित करने की आवश्यकता है।

सरणी नाम घोषित करने के लिए, हमें पहले उस प्रकार की पहचान करने की आवश्यकता है जिसे हम परिभाषित करने जा रहे हैं। सरणियों में, हमारे पास 5 प्रकार हैं।

  1. स्थैतिक ऐरे
  2. गतिशील सरणी
  3. एक आयामी सरणी
  4. दो आयामी ऐरे
  5. बहु-आयामी सरणी

एक्सेल में स्टैटिक ऐरे में, हम वेरिएबल की घोषणा करते समय एरे के लोअर वैल्यू और ऊपरी मूल्य को अच्छी तरह से तय करेंगे। उदाहरण के लिए, नीचे दिए गए उदाहरण को देखें।

कोड:

उप ReDim_Example1 () मंद MyArray (1 से 5) स्ट्रिंग अंत उप के रूप में

यहाँ MyArray एरे का नाम है, जो 1 से 5. का मान रख सकता है। MyArray इसमें 5 अलग-अलग परिणाम रख सकता है, जैसे नीचे।

कोड:

Sub ReDim_Example1 () मंद MyArray (1 से 5) स्ट्रिंग MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "सुबह" MyArray (4) = "एक" MyArray (5) है। = "नाइस डे" एंड सब

रेडम स्टेटमेंट के साथ डायनामिक एरे

लेकिन डायनामिक एरे में, ऐसा नहीं है। हम पहले से कम मूल्य और ऊपरी मूल्य को अच्छी तरह से तय नहीं करेंगे; बल्कि, हम केवल सरणी नाम को परिभाषित करते हैं और डेटा प्रकार निर्दिष्ट करते हैं।

उप ReDim_Example1 () मंद माइअरे () स्ट्रिंग अंत उप के रूप में

सरणी नाम को गतिशील बनाने के लिए, हमें इसे पहले "डिम" शब्द के साथ घोषित करने की आवश्यकता है, लेकिन पहले से ही सरणी के आकार को अच्छी तरह से तय न करें। हम केवल कोष्ठक () के अंदर खाली मूल्यों के साथ एक सरणी का नाम देते हैं। जब सरणी में आकार शामिल नहीं होता है, तो इसे एक गतिशील सरणी के रूप में माना जाता है।

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

जिस समय आप कोष्ठक के अंदर सरणी के आकार का उल्लेख करते हैं, यह एक स्थिर सरणी बन जाता है। मंद MyArray (1 से 5) स्ट्रिंग के रूप में

डायनामिक ऐरे में, हम हमेशा कोड की अगली पंक्ति में "रेदिम" शब्द का उपयोग करके ऐरे आकार का आकार बदलते हैं।

स्ट्रिंग के रूप में MyArray (1 से 6) फिर से जोड़ें

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

VBA Redim स्टेटमेंट का उपयोग करने के उदाहरण

उदाहरण 1

व्यावहारिक रूप से "रेदिम" कथन का उपयोग करने के उदाहरण पर एक नज़र डालें। "ReDim" लागू करने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1: पहले एक मैक्रो नाम बनाएँ।

चरण 2: एक सरणी नाम को स्ट्रिंग के रूप में घोषित करें।

कोड:

उप ReDim_Example1 () मंद माइअरे () स्ट्रिंग अंत उप के रूप में

चरण 3: अब “Redim” शब्द का उपयोग करें और सरणी का आकार निर्दिष्ट करें।

कोड:

उप ReDim_Example1 () मंद MyArray () स्ट्रिंग ReDim MyArray के रूप में (1 से 3) अंत उप

चरण 4: तो अब सरणी नाम "MyArray" यहाँ 3 मान तक पकड़ सकता है। इन 3 सरणियों के मान को नीचे दिए गए की तरह असाइन करें।

कोड:

सब ReDim_Example1 () मंद MyArray () स्ट्रिंग ReDim MyArray के रूप में (1 से 3) MyArray (1) = "आपका स्वागत है MyArray (2) =" से "MyArray (3) =" VBA "अंत उप।

So, the first array is equal to the word “Welcome” the second array is equal to the word “to,” and the third array is equal to the word “VBA.”

Step 5: Now store these array values in cells.

Code:

Sub ReDim_Example1() Dim MyArray() As String ReDim MyArray(1 To 3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) End Sub

Step 6: If you run this code, we should have these values in A1, B1, and C1 cells, respectively.

Example #2 - Resize the Array Size While Remembering the Old Values.

Once the array name is assigned values, we can also resize at any point in time in the procedure by using the word “ReDim Preserve.”

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

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

जिस क्षण आप "संरक्षित" शब्द को अनदेखा करते हैं, यह पुराने मूल्यों को याद नहीं रखेगा।

यहाँ याद करने के लिए चीजें

  • ReDim केवल सरणी के अंतिम मान को पकड़ सकता है, न कि कई मानों को। उदाहरण के लिए, हम इस कोड का उपयोग नहीं कर सकते हैं “ReDim Preserve MyArray (4 से 5)”। यह त्रुटि को फेंक देगा।
  • हम स्थिर सरणियों को पुनः प्राप्त नहीं कर सकते। जिस समय आप कोष्ठक के अंदर सरणी का आकार निर्दिष्ट करते हैं, यह एक स्थिर सरणी बन जाता है।
  • ReDim का उपयोग करके, हम डेटा प्रकार नहीं बदल सकते हैं। ऐरे को घोषित करते समय हमने जो भी डेटा टाइप असाइन किया है उसे एरे पकड़ सकता है।

दिलचस्प लेख...