VBA Phantom空数组值

时间:2014-06-11 17:05:29

标签: arrays excel vba excel-vba

我在VBA的Excel范围内循环浏览一些数据(只有8个值),但我似乎在中间得到一个“幻像”空数组值。

以下是我构建数组的方法。它循环的范围导致找到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来显示这里的空格),就像数组'space'存在一样,但它是空的。

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

我只想要我的数组:

1
3

因为它只是第1和第3个值='rad'。

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

希望有人能让我摆脱痛苦。

非常感谢提前。

乔恩

1 个答案:

答案 0 :(得分:2)

尝试更改:

ReDim Preserve arSecPtCt(i)

ReDim Preserve arSecPtCt(loopCtr)