Collection ऑब्जेक्ट
VBA में Collection ऑब्जेक्ट आपको ऐसे डेटा सेट मैनेज करने की सुविधा देता है जो रनटाइम पर बढ़ या घट सकते हैं—कुछ ऐसा जो निश्चित आकार के एरे के साथ असुविधाजनक है।
Collection विभिन्न डेटा टाइप्स को एक साथ स्टोर कर सकते हैं और कुंजी द्वारा तेज़ पहुंच का समर्थन करते हैं।
Collection कब उपयोग करें
जब आपको निम्न की आवश्यकता हो तो Collection का उपयोग करें:
- अज्ञात आकार: जब डेटा का आकार रनटाइम तक ज्ञात न हो
- मिश्रित डेटा टाइप्स: जब एक साथ विभिन्न टाइप्स स्टोर करने हों
- सरल कुंजी पहुंच: जब इंडेक्स की जगह नाम से डेटा एक्सेस करना हो
- लचीले आकार: जब तत्वों को गतिशील रूप से जोड़ना/हटाना हो
Collection बनाम एरे
| विशेषता | Collection | एरे |
|---|---|---|
| आकार बदलना | स्वचालित | ReDim आवश्यक |
| डेटा टाइप | मिश्रित संभव | एक टाइप |
| कुंजी पहुंच | समर्थित | असमर्थित |
| प्रदर्शन | थोड़ा धीमा | थोड़ा तेज़ |
| तत्व संशोधन | हटाएं और जोड़ें | सीधा संशोधन |
Collection बेसिक ऑपरेशंस
Collection बनाना
collection_create.bas
Sub CollectionBanaye()
' Collection वेरिएबल घोषित और इनिशियलाइज़ करें
Dim col As Collection
Set col = New Collection
' अब आप col का उपयोग कर सकते हैं
Debug.Print TypeName(col) ' "Collection"
End Sub
Add मेथड: आइटम जोड़ना
collection_add.bas
Sub AddUdaharan()
Dim col As Collection
Set col = New Collection
' बेसिक जोड़ना
col.Add "सेब"
col.Add "केला"
col.Add "संतरा"
' परिणाम
Debug.Print col.Count ' 3
Debug.Print col(1) ' "सेब"
End Sub
कुंजियों के साथ आइटम जोड़ना
collection_add_key.bas
Sub AddKunjiKeSaath()
Dim col As Collection
Set col = New Collection
' कुंजी के साथ जोड़ना
col.Add "सेब", "fruit1"
col.Add "गाजर", "vegetable1"
col.Add "केला", "fruit2"
' कुंजी से पहुंच
Debug.Print col("fruit1") ' "सेब"
Debug.Print col("vegetable1") ' "गाजर"
End Sub
チェック
कुंजियां स्ट्रिंग होनी चाहिए और Collection के भीतर अद्वितीय होनी चाहिए। Remove मेथड: आइटम हटाना
collection_remove.bas
Sub RemoveUdaharan()
Dim col As Collection
Set col = New Collection
col.Add "सेब", "fruit1"
col.Add "केला", "fruit2"
col.Add "संतरा", "fruit3"
Debug.Print "हटाने से पहले: " & col.Count ' 3
' इंडेक्स से हटाएं
col.Remove 1
' कुंजी से हटाएं
col.Remove "fruit2"
Debug.Print "हटाने के बाद: " & col.Count ' 1
End Sub
Collection में लूप करना
For Each लूप (अनुशंसित)
collection_foreach.bas
Sub ForEachLoop()
Dim col As Collection
Set col = New Collection
col.Add "सेब"
col.Add "केला"
col.Add "संतरा"
Dim item As Variant
For Each item In col
Debug.Print item
Next item
End Sub
For लूप (इंडेक्स द्वारा)
collection_for.bas
Sub ForLoop()
Dim col As Collection
Set col = New Collection
col.Add "सेब"
col.Add "केला"
col.Add "संतरा"
Dim i As Long
For i = 1 To col.Count
Debug.Print i & ": " & col(i)
Next i
End Sub
チェック
Collection इंडेक्स 1 से शुरू होते हैं, 0 से नहीं। यह एरे व्यवहार से अलग है। Collection बनाम Dictionary
| विशेषता | Collection | Dictionary |
|---|---|---|
| कुंजी जांच | असमर्थित | Exists मेथड |
| मूल्य अपडेट | हटाएं और जोड़ें | सीधा असाइनमेंट |
| सभी कुंजियां | असमर्थित | Keys मेथड |
| सभी मूल्य | असमर्थित | Items मेथड |
| आवश्यकताएं | बिल्ट-इन | एक्सटर्नल संदर्भ |
जब आपको कुंजी अस्तित्व जांच या सीधे मूल्य संशोधन की आवश्यकता हो तो Dictionary का उपयोग करें।
प्रैक्टिकल उदाहरण: अद्वितीय मूल्य निकालना
unique_values.bas
Function AadwitiyaMulyaNikalein(rng As Range) As Collection
Dim col As Collection
Set col = New Collection
Dim cell As Range
On Error Resume Next
For Each cell In rng
' अद्वितीयता के लिए कुंजी के रूप में मूल्य का उपयोग करें
col.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0
Set AadwitiyaMulyaNikalein = col
End Function
Sub TestAadwitiyaMulya()
Dim uniqueValues As Collection
Set uniqueValues = AadwitiyaMulyaNikalein(Range("A1:A10"))
Debug.Print "अद्वितीय मूल्यों की संख्या: " & uniqueValues.Count
Dim item As Variant
For Each item In uniqueValues
Debug.Print item
Next item
End Sub
सारांश
- Collection: गतिशील आकार वाले डेटा प्रबंधन के लिए उपयुक्त
- Add/Remove: आइटम जोड़ना और हटाना
- कुंजी पहुंच: स्ट्रिंग कुंजियों द्वारा तेज़ पहुंच
- For Each: पुनरावृत्ति के लिए अनुशंसित
- Dictionary: जब अधिक सुविधाओं की आवश्यकता हो
Collection सरल गतिशील डेटा के लिए उत्कृष्ट है, जबकि Dictionary अधिक उन्नत कुंजी-मूल्य संचालन के लिए बेहतर है।
#VBA
#Collection
#डायनामिक एरे
#Excel