任何属性冒泡排序对象?

时间:2012-03-26 14:56:06

标签: excel-vba bubble-sort vba excel

我正在使用冒泡排序功能按对象的属性对对象进行排序。不幸的是,我不得不为每个属性编写一个函数。有没有办法概括下面的功能。

而不是写

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

1 个答案:

答案 0 :(得分:1)

我认为VBA不允许你使用反射,所以我想你需要重写你的文章类并添加方法以按名称获取属性,例如article.get("volume")来获取音量。如果你没有太多的字段,它可能是最简单的方法。 get函数仍然需要某种Select或If / Then语句,但它将被封装在类本身中。