我正在使用冒泡排序功能按对象的属性对对象进行排序。不幸的是,我不得不为每个属性编写一个函数。有没有办法概括下面的功能。
而不是写
SortArticlesByVolume(a)
SortArticlesByLenght(a)
我想写一些像:
SortArticles(a, volume)
Sub SortArticlesByVolume(ByRef文章As Variant)
Dim sorted As Boolean
Dim i As Integer
sorted = False
Do While Not sorted
sorted = True
For i = 0 To UBound(articles) - 1
If articles(i).volume < articles(i + 1).volume Then
Set temp = articles(i + 1)
Set articles(i + 1) = articles(i)
Set articles(i) = temp
sorted = False
End If
Next i
Loop
End Sub
Sub SortArticlesBylenght(ByRef文章As Variant)
Dim sorted As Boolean
Dim i As Integer
sorted = False
Do While Not sorted
sorted = True
For i = 0 To UBound(articles) - 1
If articles(i).lenght < articles(i + 1).lenght Then
Set temp = articles(i + 1)
Set articles(i + 1) = articles(i)
Set articles(i) = temp
sorted = False
End If
Next i
Loop
End Sub
答案 0 :(得分:1)
我认为VBA不允许你使用反射,所以我想你需要重写你的文章类并添加方法以按名称获取属性,例如article.get("volume")
来获取音量。如果你没有太多的字段,它可能是最简单的方法。
get函数仍然需要某种Select或If / Then语句,但它将被封装在类本身中。