VBA自定义类,按属性值获取所有对象

时间:2017-02-27 09:35:31

标签: excel-vba class object vba excel

我有一个类 - “Class1”,其属性 - “attribute1”为字符串。 此属性的可能值是{1,2}

Class1模块

   Private pattribute1 As String

   Public Property Get attribute1 () As String
       attribute1 = pattribute1 
   End Property

   Public Property Let attribute1 (Value As String)
       pattribute1 = Value
   End Property

在我的主程序中,我需要检索attribute1值等于{1}的所有对象。

主要模块

   Dim col As New Collection 

   'Create objects 
   Do While j <= 5

       Dim obj As Class1
       Set obj= New Class1
       if j<3 then 
           obj.attribute1 = "1"
       else 
           obj.attribute1 = "2"
       end if
       j = j + 1
   Loop

   Set col = 'get all objects from Class1 with attribute equal to "1"

哪种方法最有效?

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

Main模块中的代码修改为以下代码:

Option Explicit

Sub TestClass1()

Dim col() As New Class1
Dim obj As Class1
Dim j As Long
Dim id As Long

ReDim col(0 To 100) '<-- init to large size, will optimize later

'Create objects
Do While j <= 5
    Set obj = New Class1
    If j < 3 Then
        obj.attribute1 = "1"
        Set col(id) = obj '<-- add to col when equals 1
        id = id + 1
    Else
        obj.attribute1 = "2"
    End If
    j = j + 1
    Set obj = New Nothing
Loop

ReDim Preserve col(0 To id - 1) '<-- resize array to populated size

End Sub