Introduction to Dynamic Array in VBA in Hindi
Makhanlal Chaturvedi University / BCA / VBA programming
Dynamic Array in VBA Explained with ReDim and Preserve in Hindi
Introduction to Dynamic Array in VBA in Hindi
जब हम Excel VBA में किसी डेटा को एक साथ store करना चाहते हैं, तो हम Array का उपयोग करते हैं। एक array एक ऐसा container होता है जिसमें कई values एक साथ रखी जा सकती हैं। लेकिन यदि हमें यह नहीं पता कि हमें कितने values रखने हैं, तो हम Dynamic Array का उपयोग करते हैं। Dynamic Array वह array होता है जिसकी size (आकार) को हम बाद में run-time के दौरान तय कर सकते हैं।
Fixed Array में हमें पहले से ही बताना पड़ता है कि कितने elements store करने हैं, जैसे:
Dim numbers(5) As Integer
लेकिन यदि हमें बाद में decide करना हो कि कितने elements चाहिए, तो हमें चाहिए Dynamic Array। इसका syntax इस प्रकार है:
Dim numbers() As Integer
ऊपर के उदाहरण में array की कोई size नहीं बताई गई है। यह एक dynamic array है और इसकी size को हम बाद में ReDim के माध्यम से define करेंगे।
Dynamic Array के लाभ
- जब elements की संख्या पहले से न पता हो
- Memory efficient होता है
- जितना data चाहिए उतनी ही memory allocate होती है
- Data बढ़ाने या घटाने में सुविधा होती है
How to Use ReDim Statement with Dynamic Array in Hindi
Dynamic Array में data store करने के लिए हमें सबसे पहले उसकी size को ReDim statement का उपयोग करके specify करना पड़ता है। ReDim का अर्थ होता है "Re-Dimension" यानी size को define या redefine करना।
ReDim का Basic Syntax
ReDim arrayName(size) As DataType
उदाहरण के लिए:
Dim marks() As Integer
ReDim marks(4)
अब marks नाम के array में 5 elements (0 से 4 तक) store हो सकते हैं।
ReDim का उपयोग हम एक से अधिक बार भी कर सकते हैं, जब हमें size बदलनी हो:
ReDim marks(9)
ध्यान दें: जब आप ReDim दोबारा use करते हैं, तो पुराना data खो जाता है, यदि आपने Preserve keyword का उपयोग नहीं किया हो।
ReDim को कब और क्यों उपयोग करें
- जब array की size run-time पर decide हो
- जब user से input लेकर array में value भरनी हो
- जब data को अलग-अलग conditions के हिसाब से adjust करना हो
Preserving Data in Dynamic Array using ReDim Preserve in Hindi
जब हम ReDim का इस्तेमाल करते हैं, तो पुराना data by default delete हो जाता है। अगर हम चाहते हैं कि पुराना data सुरक्षित रहे, तो हमें ReDim Preserve का use करना चाहिए।
ReDim Preserve का Syntax
ReDim Preserve arrayName(newSize)
उदाहरण:
Dim students() As String
ReDim students(1)
students(0) = "Amit"
students(1) = "Ravi"
ReDim Preserve students(2)
students(2) = "Sonal"
ऊपर दिए गए उदाहरण में, पहले array में दो students थे - "Amit" और "Ravi"। जब हमने array की size बढ़ाकर 3 की, तब "ReDim Preserve" का use करने से पहले के students की जानकारी भी सुरक्षित रही और नया student "Sonal" भी जोड़ा गया।
ReDim Preserve की सीमाएं
- आप सिर्फ last dimension की size ही बदल सकते हैं
- यदि आप multi-dimensional array में Preserve इस्तेमाल करना चाहते हैं, तो यह केवल final dimension तक ही सीमित है
Multi-Dimensional Array में Preserve काम नहीं करता:
Dim matrix() As Integer
ReDim matrix(2, 2)
' अब इसे ReDim Preserve से बढ़ाना चाहें तो केवल last dimension ही बढ़ा सकते हैं
इसलिए Preserve को single-dimensional array के साथ ही अधिकतर इस्तेमाल किया जाता है।
When to Prefer Dynamic Array Over Fixed Array in Hindi
Dynamic Array और Fixed Array दोनों के अपने लाभ होते हैं, लेकिन हमें Dynamic Array को तभी prefer करना चाहिए जब कुछ विशेष परिस्थितियाँ हों। नीचे कुछ महत्वपूर्ण स्थितियाँ दी गई हैं जहाँ हमें Dynamic Array को चुनना चाहिए:
Dynamic Array का उपयोग कब करें?
- जब डेटा की मात्रा run-time में तय हो रही हो
- जब user input के आधार पर array size तय करनी हो
- जब memory को efficient तरीके से use करना हो
- जब हमें values को update या resize करना हो execution के दौरान
Fixed Array का उपयोग कब करें?
- जब डेटा की मात्रा पहले से fix हो
- जब performance critical हो और memory पहले से allocate करनी हो
- जब हम nested loops में index को control करना चाहते हों
एक comparison table देखें:
| Feature | Fixed Array | Dynamic Array |
|---|---|---|
| Size | पहले से तय | Run-time पर decide होती है |
| Memory Use | ज्यादा हो सकती है | Memory efficient |
| Flexible | नहीं | हाँ |
| Code Complexity | कम | थोड़ी अधिक |
Practice करने के लिए एक Example:
Sub DynamicArrayExample()
Dim scores() As Integer
Dim i As Integer
'User से कितने students के marks लेने हैं
Dim count As Integer
count = InputBox("कितने students के marks दर्ज करने हैं?")
ReDim scores(count - 1)
For i = 0 To count - 1
scores(i) = InputBox("Student " & (i + 1) & " का marks दर्ज करें:")
Next i
'Output
For i = 0 To count - 1
MsgBox "Student " & (i + 1) & " के marks हैं: " & scores(i)
Next i
End Sub
इस example से एक beginner आसानी से समझ सकता है कि कैसे dynamic array को use किया जाता है और उसमें values डाली जाती हैं।
Dynamic Array एक बहुत ही useful concept है VBA में, खासकर जब डेटा की मात्रा और size run-time पर decide हो रही हो। ReDim और ReDim Preserve की मदद से हम array की size को manage कर सकते हैं और जरूरत पड़ने पर पुराने data को भी संभाल कर रख सकते हैं।
FAQs
Dim arr() As DataTypeउदाहरण:
Dim numbers() As Integer
उदाहरण:
ReDim numbers(5)
ReDim Preserve numbers(10)
उदाहरण:
ReDim Preserve arr(2, 5) की जगह आप केवल last वाली dimension (5) को ही बदल सकते हैं।