VBA幻影空arrays值

我正在从VBA的Excel范围循环一些数据(只有8个值),但我似乎正在得到一个'幻影'空的数组值在中间。

这是我如何build立数组。 循环的范围导致find2个值,即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来显示空格),就像数组'space'存在一样,但是它是空的。

如果我做一个debug.print UBound(arSecPtCt)我得到'3',意思是0,1,2,3占用数组'空格'。

我只想要我的数组是:

 1 3 

因为只有第一和第三个值='rad'。

如果我在if循环中debug.print i只输出1和3,没有空格,所以循环似乎工作,但我只是得到这些额外的空白。

希望有人能把我的痛苦摆脱出来。

提前谢谢了。

乔恩

尝试改变:

 ReDim Preserve arSecPtCt(i) 

 ReDim Preserve arSecPtCt(loopCtr)