【发布时间】:2015-08-26 14:58:26
【问题描述】:
我有一组具有一堆属性的同一类的对象。我想创建一个较小的集合,该集合仅包含具有特定属性的特定值的对象,并且我希望能够为不同的属性多次调用 sub 而无需制作很多版本的 sub。
这是与问题相关的代码部分:
Sub MAIN()
Dim SplitArr(1 to 2) As Variant
SplitArr(1) = Y 'where Y is the value you are looking for
GetSplit arr:=SplitArr, X:=?? 'where ?? is the property you are looking at"
End Sub
Sub GetSplit(ByRef arr(), X as ??) 'unsure what type X should be
Dim collSplit As Collection
Set collSplit = New Collection
For Each v In coll
If v.X = arr(1) Then
collSplit.Add v
End If
Next v
Set arr(2) = collSplit
End Sub
因此,GetSplit 会在主集合 coll 中进行搜索,如果其中的任何对象的 X 属性等于 Y,它将将该对象添加到集合 collSplit。最后 arr(2) 设置为 collSplit。
我不知道该怎么做是将属性名称传递给子,所以任何帮助将不胜感激。
提前致谢!
【问题讨论】:
-
将“变体”工作它允许数字和字符串。
-
@ScottCraner 我认为 Variant 是 sub 的正确类型,但我不知道在 sub MAIN() 中设置
??等于什么,或者我的符号是否适用于v.X在 GetSplit 中,因为 X 只是一个变量,而不是对属性的引用
标签: vba excel collections