我在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,没有空格,所以循环似乎有效,但我只是得到了这些额外的空白。
希望有人能让我摆脱痛苦。
非常感谢提前。
乔恩
答案 0 :(得分:2)
尝试更改:
ReDim Preserve arSecPtCt(i)
到
ReDim Preserve arSecPtCt(loopCtr)