这里是以集合的方式进行排序,为什么会出错:要求对象?    Dim Coll As New Collection
    Coll.Add 1
    Coll.Add 8
    Coll.Add 3
    Coll.Add 5
    Coll.Add 7
    
    For i = 1 To Coll.Count
        For j = 1 To Coll.Count - i
            If Coll(j) > Coll(j + 1) Then
                Dim tmp As Integer
                tmp = Coll(j)
                Coll(j) = Coll(j + 1)
                Coll(j + 1) = tmp
            End If
        Next j
    Next i
    
    For i = 0 To Coll.Count
        Debug.Print Coll(i)
    Next i

解决方案 »

  1.   

    用数组
    redim x(Coll.Count)
     For i = 1 To Coll.Count
     x(i)=Coll(i)
    next
    '下面写排序

    '写回集合
    set Coll=new collection
    For i = 1 To ubound(x)
    Coll.Add x(i)
    next
      

  2.   

    如果非要用集合,可以这么干:    Dim Coll As New Collection
        Coll.Add 1
        Coll.Add 8
        Coll.Add 3
        Coll.Add 5
        Coll.Add 7
        Dim i As Integer
        Dim j As Integer
        Dim IntMax As Integer, IntMaxIndex As Integer
        
        For i = Coll.Count To 1 Step -1
            IntMax = 0: IntMaxIndex = 1
            For j = 1 To i
                If Coll(j) >= IntMax Then IntMax = Coll(j): IntMaxIndex = j
            Next
            Coll.Remove IntMaxIndex
            Coll.Add IntMax
        Next i
        
        For i = 1 To Coll.Count
            Debug.Print Coll(i)
        Next i输出:
     8 
     7 
     5 
     3 
     1