/ / वीबीए में सभी संग्रहों के माध्यम से लूपिंग - वीबीए, संग्रह, एक्सेल-वीबीए, एक्सेल

वीबीए में सभी संग्रहों के माध्यम से लूपिंग - वीबीए, संग्रह, एक्सेल-वीबीए, एक्सेल

मेरे पास एक कार्यक्रम है जहां मैं कई अलग-अलग बनाता हूंवीबीए में संग्रह। कार्यक्रम पूरा होने के बाद, मुझे प्रत्येक संग्रह में रिकॉर्ड्स को हटाना होगा। मैं निम्न कोड के साथ सांख्यिकीय रूप से संग्रह को हटाने में सक्षम हूं:

Sub Empty_Collections()
Dim Count As Integer
Dim i As Long

Count = Managers.Count
For i = 1 To Count
Managers.Remove (Managers.Count)
Next i

Count = FS.Count
For i = 1 To Count
FS.Remove (FS.Count)
Next i

Count = Staff.Count
For i = 1 To Count
Staff.Remove (Staff.Count)
Next i

Count = Clusters.Count

For i = 1 To Count
Clusters.Remove (Clusters.Count)
Next i

End Sub

हालांकि, जैसा कि मैं भविष्य में अतिरिक्त संग्रह जोड़ सकता हूं, क्या इस तरह के कोड होना संभव है:

Dim Item As Collection
Dim Count As Integer
Dim i As Long

For Each Item In Worksheets
Count = Item.Count

For i = 1 To Count
Item.Remove (Item.Count)
Next i

Next

उत्तर:

जवाब के लिए 0 № 1

जबकि मैं इस तरह ग्लोबल्स बनाने में संकोच करता हूं, यहां एक संभावित समाधान है:

में ThisWorkbook एक्सेल ऑब्जेक्ट, निम्न जोड़ें:

Private pCollections As Collection
Public Property Get Collections() As Collection
If pCollections Is Nothing Then: Set pCollections = New Collection
Set Collections = pCollections
End Property
Public Property Set Collections(Value As Collection)
Set pCollections = Value
End Property

Public Sub AddCollection(Name As String)
Dim Coll As New Collection
Me.Collections.Add Coll, Name
End Sub

Public Sub EmptyCollections()
Dim Coll As Collection
For Each Coll In Me.Collections
EmptyCollection Coll
Next Coll
End Sub

Private Sub EmptyCollection(ByRef Coll As Collection)
Do While Coll.Count > 0
" Remove items from the end of the collection
Coll.Remove Coll.Count
Loop
End Sub

फिर संग्रह के साथ जोड़ें और काम करें:

" Add collections
" (without helper)
Dim Managers As New Collection
ThisWorkbook.Collections.Add Managers, "Managers"

" (with helper)
ThisWorkbook.AddCollection "FS"
ThisWorkbook.AddCollection "Staff"
ThisWorkbook.AddCollection "Clusters"

" Add items to collection
" (access collection via named key for ease-of-use)
ThisWorkbook.Collections("Managers").Add "Alice"
ThisWorkbook.Collections("Managers").Add "Bob"

" (or original reference if desired
Managers.Add "Carl"

Debug.Print Managers.Count " => 3
Debug.Print ThisWorkbook.Collections("Managers").Count " => 3

" Add collection later
ThisWorkbook.AddCollection "FutureCollection"

" Empty all collections
ThisWorkbook.EmptyCollections

यह जो कुछ आप खोज रहे हैं उससे थोड़ा अधिक जटिल हो सकता है, लेकिन इसे केंद्रीय स्थान पर संग्रह जोड़ने का लाभ है ताकि वे बाद में खाली हो सकें।