使用比较器对VBA中的对象集合进行排序

时间:2019-06-20 12:49:44

标签: vba excel-vba arraylist collections

我正在尝试在VBA中实现自己的集合,该集合用于存储对象列表。我是VBA的新手,我需要找到一种实现解决方案的方法。

我所拥有的:具有不同属性的对象列表,其中最重要的是特定操作的持续时间。

我需要什么:我希望通过使用基于时间属性(特定动作的持续时间)的比较器来对对象进行排序。

您推荐哪种收藏?我需要创建自己的帮助器方法以便对集合的元素进行排序吗? VBA有一个比较器接口,可以在我自己的集合对象上实现?

2 个答案:

答案 0 :(得分:2)

我已经解决了使用Types的类似问题。

Option Compare Database
Option Explicit
Type tPersonalData
    FamilyName As String
    Name As String
    BirthDate As Date
End Type
Type tHuman
    PersonalData As tPersonalData
    Height As Integer
    CashAmount As Integer
End Type
Public Sub subUsage()
    Dim Humans(10) As tHuman
    Dim HumanCurrent As tHuman
    With HumanCurrent
        .CashAmount = 100
        .Height = 190
        .PersonalData.FamilyName = "Smith"
        .PersonalData.Name = "John"
        .PersonalData.BirthDate = CDate("01.01.1980")
    End With
    Humans(1) = HumanCurrent
End Sub

因此,您可以使用给定的字段为数组实现自己的排序功能。

答案 1 :(得分:1)

我已经基于Van Ng的创建了一种排序方法,以便对我的对象进行排序:

HttpModule