【发布时间】:2014-06-26 06:32:32
【问题描述】:
我正在尝试找出一种方法来迭代(字典)其他自定义对象中包含的自定义对象,而不必每次都使用“设置”。
我的目标是能够直接写:
For Each Person In Family.GetMembers
test= Person.Age
Next Person
但上面给了我一个object required 错误。但是,我想避免类似
for each name in family.keys
set Person = Family.GetMember(name)
test= Person.Age
next name
类对象 cperson
Option Explicit
Private pName As String
Private pAge As Integer
Public Property Let name(name As String):
pName = name
End Property
Public Property Get name() As String
name = pName
End Property
Public Property Let Age(Age As Integer):
pAge = Age
End Property
Public Property Get Age() As Integer
Age = pAge
End Property
类对象cfamily
Option Explicit
Private pFamily As Object
Private pName As String
Private Sub Class_Initialize()
Set pFamily = CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
Set pFamily = Nothing
End Sub
Public Sub Add(Person As CPerson)
If pFamily.exists(Person.name) Then
pFamily.Remove Person.name
pFamily.Add Person.name, Person
Else
pFamily.Add Person.name, Person
End If
End Sub
Public Property Get GetMember(name As Variant) As CPerson:
Set GetMember = pFamily(name)
End Property
Public Property Let name(name As String):
pName = name
End Property
Public Property Get name() As String
name = pName
End Property
Public Property Get GetMembers() As Variant
Dim tmpArray() As Variant, Person As CPerson, i As Integer, name As Variant
ReDim tmpArray(pFamily.Count)
i = 1
For Each name In pFamily.keys
Set Person = pFamily(name)
Set tmpArray(i) = Person
i=i+1
Next name
GetMembers = tmpArray
End Property
【问题讨论】:
标签: object excel iterator iteration vba