2014-06-11 209 views
0

我在VBA中循環處理Excel範圍內的一些數據(只有8個值),但我好像在中間得到一個'幻像'空數組值。VBA Phantom空陣列值

這是我如何構建數組。循環的範圍導致找到2個值,即2個值='rad'。

' arRoPtsXY is a 2D array 
counter2 = UBound(arRoPtsXY, 2) 
Dim arSecPtCt() 
loopCtr = 0 

For i = 1 To counter2 
    rad = Sqr((secCX - arRoPtsXY(1, i))^2 + (secCY - arRoPtsXY(2, i))^2) 
    If rad = secR Then 
    ReDim Preserve arSecPtCt(i) 
    arSecPtCt(loopCtr) = i 
    loopCtr = loopCtr + 1 
    End If 
Next i 

但是,當我執行此:

For a = LBound(arSecPtCt) To UBound(arSecPtCt) 
    Debug.Print arSecPtCt(a) 
Next a 

我得到這樣的輸出:

1 
3 


'end 

注意,上面有2個空格被輸出(3後,我加入'end在這裏顯示空格),就像數組'空間'存在一樣,但它是空的。

如果我做一個debug.print UBound(arSecPtCt)我得到'3',意思是0,1,2,3佔用數組'空格'。

我只想我的數組是:

1 
3 

因爲只有第一和第三值=「弧度」。

如果我debug.print i在if循環期間,它只輸出1和3,沒有空格,所以循環似乎工作,但我只是得到這些額外的空白。

希望有人能把我帶出我的苦難。

非常感謝提前。

喬恩

回答

2

嘗試改變:

ReDim Preserve arSecPtCt(i) 

ReDim Preserve arSecPtCt(loopCtr) 
+0

唉...有時你看不到木樹:)認爲這將是令人難以置信的東西簡單我忽略了。非常感謝@RonRosenfeld – j0nr