Abh*_* O. 8 arrays excel vba excel-vba
我已经声明了一个数组,Dim rArray() As Variant但是当我尝试使用存储在其中的值时(如下所示),我得到一个超出范围错误的下标.的UBound(rArray)和LBound(rArray)两个返回值14和1,但在发生错误Debug.Print行.
如果我使用如下的for语句
For Each rArr in rArray
Run Code Online (Sandbox Code Playgroud)
然后它没有问题,但为了我创建这个数组的目的,我需要灵活地选择按顺序存储的每个项目 - 这意味着我需要使用下标来引用它们.
我已经尝试了多种方法来尝试解决这个问题而没有运气,并且在这一个问题上花了将近一半的时间.任何人都可以指出我需要改变什么才能让它发挥作用.
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
Run Code Online (Sandbox Code Playgroud)
编辑:另一个值得一提的事实是,他在一个函数中声明并使用了数组,但它不是从函数传递给函数.不能在函数中声明和使用数组吗?
小智 7
当你将工作表值分配给一个变量数组时,你总是得到一个基于1的二维数组(例如1到1,1到1; 从不 0到0,到0).如果您从单个列获取值,则第二个Rank仅为1到1.
这可以通过以下方式证明.
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
Run Code Online (Sandbox Code Playgroud)
所以你需要在数组的第一个等级中要求元素; 仅仅要求元素是不够的.
| 归档时间: |
|
| 查看次数: |
6371 次 |
| 最近记录: |