我有一個涉及排序值的過程。我的代碼(精簡到重要部件)看起來是這樣的:爲什麼「Rank_Eq」打破了我的循環?
Dim myArray() as variant
ReDim myArray(1 to 4, 1 to x)
for i = 1 to x
myArray(1,i) = a
myArray(2,i) = b
myArray(3,i) = c
next i
for j = 1 to x
myArray(4,j) = Application.Rank_Eq(myArray(3,j), Application.Index(myArray,3,0), 1)
next j
for k = 1 to x
myFunction(myArray(4,k))
next k
調試吧,for j = 1 to x
循環工作正常,如果我只是返回,說的j
的價值或myArray(3,j)
的價值,但它爆發的當我使用Application.Rank_Eq()
公式時,在j = 1處循環。
我做了一些真正愚蠢的事情,我無法看到,或者這是一個Excel問題?
編輯:
我嘗試使用以下調試:
myIndex = Application.Index(myArray,3,0)
for k = 1 to x
MsgBox myIndex(k,1)
a = Application.Rank_Eq(myIndex(1,k), editedRows, 1)
next k
這似乎運行正常 - 返回即myIndex(k,1)
每個值。但是,如果我在下一個k
之前添加MsgBox a
,則會中斷。這表明這與Rank_Eq
返回的值有關,不是嗎?
我會將該行分成幾行:'myVal = myArray(3,j)'和'myIndex = Application.Index(myArray,3,0)'和'myArray(4 ,j)= Application.Rank_Eq(myVal,myIndex,1)'。這樣調試起來就更容易了,它在哪裏是失敗的。 –
@TorstenLink - 請參閱我的編輯。我仍然不明白是什麼導致了這個問題。 – apkdsmith
從研究看來,Rank_Eq看起來不接受參考數組 - 它需要作爲參考... – apkdsmith