对于一个集合,它是最好的它的键排序它(这是他们在做什么那里) - 但如果你没有钥匙名单:
'Give an input "Data As Collection"
Dim vItm As Variant
Dim i As Long, j As Long
Dim vTemp As Variant
For i = 1 To Data.Count – 1
For j = i + 1 To Data.Count
If CompareKeys(Data(i).myMemberKey, Data(j).myMemberKey) Then
'store the lesser item
vTemp = Data(j)
'remove the lesser item
Data.Remove j
're-add the lesser item before the greater Item
Data.Add vTemp, , i
End If
Next j
Next i
(失去你的钥匙!)
想出你自己的CompareKey函数,如果UDT成员变量大于或等于<或0,则返回true或false。您必须删除并重新添加的原因是因为您无法在vb6/vba集合对象中“交换”内部成员。
最好的运气
编辑:
要访问你的程序的名称(如字符串)的属性,使用VB的CallByName
function形式:
Result = CallByName(MyObject, "MyProperty", vbGet)
如果集合充满对象,我认为你需要设置vTemp =数据(j) – 2012-04-23 02:16:15
谢谢,但我怎么能写这个函数来排序数据的任意属性?我必须在函数中对属性的名称进行硬编码吗?我宁愿将它作为参数传递。 – Cutter 2012-04-23 06:06:59
简单易如反掌。使用'CallByName':http://www.pcreview.co.uk/forums/vb6-access-object-properties-name-t1409534.html – 2012-04-23 06:24:31