用数组下标超出范围的错误 – 不知道为什么?

我已经宣布一个数组作为这样的Dim rArray() As Variant但是当我尝试和使用存储在它的值(如下所示),我得到一个下标超出范围的错误。 UBound(rArray)LBound(rArray)都返回值14和1,但错误发生在Debug.Print行。

如果我使用for语句如下

 For Each rArr in rArray 

那么它的工作没有问题,但为了创build这个数组的目的,我需要灵活性来select存储在这个顺序中的每个项目 – 这意味着我需要使用下标引用它们。

我已经尝试了多种方法来尝试和解决这个问题,但没有运气,在这个问题上花费了将近一半的时间。 任何人都可以指出我需要改变这个工作。

 Set rng = Range("D4", Range("D4").End(xlDown)) rng.NumberFormat = "0" rArray = rng.Value For x = UBound(rArray) To LBound(rArray) Step -1 Debug.Print rArray(x) Next x 

编辑:另一个值得一提的事实是,他的数组是在一个函数内声明和使用的,但是它不会传递给函数。 不能在函数中声明和使用数组?

当你将工作表值分配给一个variables数组时,你总是会得到一个基于1的二维数组(例如1到某个东西,1到某个东西; 0到某个东西,0到某个东西)。 如果你从一列中获得价值,第二等级只是1比1。

这可以通过以下来certificate。

 Dim x As Long, rArray As Variant, rng As Range Set rng = Range("D4", Range("D4").End(xlDown)) rng.NumberFormat = "0" 'don't really understand why this is here rArray = rng.Value Debug.Print LBound(rArray, 1) & ":" & UBound(rArray, 1) Debug.Print LBound(rArray, 2) & ":" & UBound(rArray, 2) For x = UBound(rArray, 1) To LBound(rArray, 1) Step -1 Debug.Print rArray(x, 1) Next x 

所以你需要询问数组中的第一个元素; 只是要求要素是不够的。