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

विशेषताCollectionDictionary
कुंजी जांचअसमर्थित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