我对VBA很新,所以请耐心等待。
我有一个动态数组我试图找到上限。我理解如何使用UBound找到1-d数组的上界(即UBound(TestArray))并找到2-d数组的上界(即UBound(TestArray,2)。我需要知道什么是否有办法找到嵌套动态数组的上限。
基本上我有一个动态数组 - TestArray(0,j) - 其中j是一个变量,其中0表示一个嵌套的动态数组。我需要知道嵌套数组的上限。这可能吗?
我已经尝试过UBound(TestArray(0,j)())和UBound(TestArray,1)但它们不起作用。所以我需要的是有人告诉我其中一个应该工作,而我的其余代码搞砸了,它实际上是不可能的,我需要开始思考在某个工作中,或者在某个地方,将15页隐藏在Google搜索结果中,有人确实知道如何执行此操作。
顺便说一下,我尝试迭代数组直到我到达终点,但显然在结束后元素不再存在,所以我得到了一个"下标超出范围"错误。我目前正在努力解决错误处理问题,但我希望有人能够对我的问题有一个神奇的解决方案,理想情况是一行代码。答案 0 :(得分:0)
我没有试过这个,但你尝过类似的事情:
Dim Innerarray作为变体
Innerarray = TestArray(0,j)
然后查询ubound(innerarray,1)
答案 1 :(得分:0)
另一种选择是:你提到你曾尝试在数组中循环,但最后得到了错误。如果关闭错误处理然后发生错误,此方法将起作用,从循环计数器中减去1。下面的代码不是我的,它来自Chip Pearson,我希望我可以参考他的网站。此功能取自他的阵列处理模块
Public Function NumberOfArrayDimensions(Arr As Variant) As Integer
'http://www.cpearson.com/excel/vbaarrays.htm
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' NumberOfArrayDimensions
' This function returns the number of dimensions of an array. An unallocated dynamic array
' has 0 dimensions. This condition can also be tested with IsArrayEmpty.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Ndx As Integer
Dim Res As Integer
On Error Resume Next
' Loop, increasing the dimension index Ndx, until an error occurs.
' An error will occur when Ndx exceeds the number of dimension
' in the array. Return Ndx - 1.
Do
Ndx = Ndx + 1
Res = UBound(Arr, Ndx)
Loop Until Err.Number <> 0
NumberOfArrayDimensions = Ndx - 1
End Function