我一直在努力使用此代碼(可能非常簡單的錯誤),任何人都不會介意指出我的問題在哪裏?我的總體目標是讓這個子程序接受一個可變大小的範圍,但是我似乎無法讓它工作到一個固定的大小。將單行範圍複製到數組然後將ByRef傳遞給函數VBA
如果我手動分配數組,事情按預期工作,但是當我分配的範圍是事情出錯的地方。輸出沒有改變,這導致我相信我沒有正確地使用分配。當我嘗試將ws.UsedRange傳遞給固定範圍時,我也會遇到錯誤。
Private Sub InsertionSort(ByRef a(), ByVal lo0 As Long, ByVal hi0 As Long)
Dim i As Long, j As Long, v As Long
For i = lo0 + 1 To hi0
v = a(i)
j = i
Do While j > lo0
If Not a(j - 1) > v Then Exit Do
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = v
Next i
End Sub
Sub runSort()
Dim ws As Worksheet
Set ws = ActiveWorkbook.ActiveSheet
Dim myArr() As Variant
Dim rangeUse As Range
With ws.Range("D17:K17")
ReDim myArr(1 To 1, 1 To ws.Range("D17:K17").Columns.Count)
myArr = ws.Range("D17:K17").Value
End With
Call InsertionSort(myArr, LBound(myArr), UBound(myArr))
Range("D19:K19") = myArr
End Sub
任何幫助將不勝感激! TIA
將範圍分配給數組時,您將始終獲得2維數組(即使只有1列/數據行)。我會檢查你的錯誤處理 - 如果它沒有返回錯誤,或者沒有使用「調試」框,那麼有些東西不會讓你看到代碼中的錯誤 – SeanC
*'允許這個子程序接受一系列可變尺寸*你什麼意思? – 2013-08-19 13:54:26
@SeanChesire - 沒有錯誤返回所有我得到的是一個未排序的數組作爲輸出 – ast4