我正在处理下面的代码,它应该从电子表格中获取值到数组中,对它们进行排序(这里是一个三重排序 - 三个数组排序在一次),并最后把结果放在另一个表...数组的排序过程不起作用 - 类型不匹配
问题是我得到一个下标超出范围“的错误消息,我真的不知道如何解决它 我似乎有这个问题每个我试着对一个数组进行排序..所以必须有排序错误...(这里叫做TriFonds)
任何帮助将不胜感激..
Option Explicit
Option Base 1
Sub Class()
Dim i As Integer, j As Integer, k As Integer
Dim nb_Actions As Long
With Worksheets("Actions")
nb_Actions = .Cells(1, Columns.Count).End(xlToLeft).Column
End With
ReDim NomAction(nb_Actions) As Double
ReDim IndiceAction(nb_Actions) As Double
ReDim Ratio(nb_Actions) As Double
With Worksheets("Actions")
'I fill in arrays with data from the column
For i = 1 To nb_Actions
Ratio(i) = .Cells(18 + i, 2).Value
Next i
For j = 1 To nb_Actions
IndiceAction(j) = .Cells(18 + j, 3).Value
Next j
For k = 1 To nb_Actions
NomAction(k) = .Cells(18 + k, 1).Value
Next k
End With
Call TriFonds(Ratio(), NomAction(), IndiceAction())
With Worksheets("Performance")
For i = 1 To nb_Actions
.Cells(4 + i, 2) = IndiceAction(i)
.Cells(4 + i, 3) = NomAction(i)
.Cells(4 + i, 4) = Ratio(i)
Next i
End With
End Sub
Sub TriFonds(Tab1() As Double, Tab2() As Double, Tab3() As Double)
Dim Temp1 As Double
Dim Temp2 As Double
Dim Temp3 As Double
Dim i As Long, j As Long
Dim ligne_Fin As Long
'Last line from the sorting procedure
ligne_Fin = UBound(Tab1)
For i = 2 To ligne_Fin
Temp1 = Tab1(i)
Temp2 = Tab2(i)
Temp3 = Tab3(i)
For j = i - 1 To 1 Step -1 'Increasing order
If (Tab1(j) <= Temp1) Then GoTo 10
Tab1(j + 1) = Tab1(j)
Tab2(j + 1) = Tab2(j)
Tab3(j + 1) = Tab3(j)
j = 0
10 Tab1(j + 1) = Temp1
Tab2(j + 1) = Temp2
Tab3(j + 1) = Temp3
Next j
Next i
End Sub
我更新的代码,但我仍然得到同样的错误:( – seigna 2013-05-06 11:38:02
请注明线给你错误 – 2013-05-06 11:38:43
我该怎么做? 顺便说一句,不会有任何错误,现在它只是返回零到处:( – seigna 2013-05-06 11:47:32