0

このトピックは以前に何度も開かれたことを知っています。

私はすべての例を見ましたが、それを機能させることはできません!

私は 3 つの次元を持っています。日付は最初の次元にあります。

1つの配列を期待してすべてが正常に機能しますが、その理由がわかりません..

ここにテストリンクがあります:ここをクリック

Sub DataSorter(arrArray)
    Dim row, j, StartingKeyValue, StartingOtherValue, _
        NewStartingKey, NewStartingOther, _
        swap_pos

    For row = 0 To UBound(arrArray)-1
        StartingKeyValue = arrArray(row, 0)
        StartingOtherValue = arrArray(row, 0)
        StartingVenue = arrArray(row, 1)
        StartingVenueOther = arrArray(row, 1)
        swap_pos = row
        For j = row + 1 to UBound(arrArray)
            If DateDiff("s", arrArray(j, 0), NewStartingKey) < 0 Then
                swap_pos = j
                NewStartingKey = arrArray(j, 0)
                NewStartingOther = arrArray(j, 0)
                NewStartingVenue = arrArray(j, 1)
                NewStartingVenueOther = arrArray(j, 1)
                NewStartingCountry = arrArray(j, 2)
                NewStartingCountryOther = arrArray(j, 2)
            End If
        Next    
        If swap_pos <> row Then
            arrArray (swap_pos, 0) = StartingKeyValue
            arrArray (swap_pos, 0) = StartingOtherValue            
            arrArray (row, 0) = NewStartingKey
            arrArray (row, 0) = NewStartingOther     
            arrArray (swap_pos, 1) = StartingVenue
            arrArray (swap_pos, 1) = StartingVenueOther  
            arrArray (row, 1) = NewStartingVenue
            arrArray (row, 1) = NewStartingVenueOther   
            arrArray (swap_pos, 2) = StartingCountry
            arrArray (swap_pos, 2) = StartingCountryOther  
            arrArray (row, 2) = NewStartingCountry
            arrArray (row, 2) = NewStartingCountryOther   
        End If  
    Next
End Sub
4

1 に答える 1

0

非常に奇妙なコード。これを試して:

Sub DataSorter(arrArray)
Dim row, i, tmp
For row = 0 To UBound(arrArray) - 1
    For j = row + 1 to UBound(arrArray)
        If DateDiff("s", arrArray(j, 0), arrArray(row, 0)) < 0 Then
            For i = 0 To 2
                tmp = arrArray(j, i)
                arrArray(j, i) = arrArray(row, i)
                arrArray(row, i) = tmp
            Next
        End If
    Next
Next

サブ終了

于 2013-03-15T04:57:39.907 に答える