【发布时间】:2021-12-25 06:56:35
【问题描述】:
我已经声明了一个这样的数组Dim rArray() As Variant但是当我尝试使用存储在其中的值时(如下所示),我得到一个下标超出范围错误。 UBound(rArray) 和 LBound(rArray) 都返回值 14 和 1,但错误发生在 Debug.Print 行。
如果我使用下面的 for 语句
For Each rArr in rArray
然后它可以正常工作,但出于创建此数组的目的,我需要灵活地选择按该顺序存储的每个项目——这意味着我需要使用下标来引用它们。
我尝试了多种方法来尝试解决这个问题,但没有成功,我几乎半天的时间都在这个问题上。谁能指出我需要改变什么才能让它工作。
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
编辑:另一个值得一提的事实是,数组是在函数中声明和使用的,但它没有从函数传递或传递给函数。 Functions中不能声明和使用数组吗?
【问题讨论】:
-
我不是专家,但如果你打印 x,看看 x 的值是多少,问题发生在
-
谢谢。我不必打印 x,在调试时我可以看到 x 的值为 14,这是循环开始的地方 - 数组中存储了 14 个项目。
-
作为故障排除步骤,如果您删除循环并尝试 x=13 会怎样?并尝试 x=1
-
试过了——我得到了同样的错误——下标超出范围。这就是让我认为这是我将值存储在数组中的方式。
-
我不知道,我并没有真正使用VBA,但你这个问题问得很好,听起来很琐碎,你会得到答复的。