我将EuroCPCrap映射为(j,0)(I,0),并希望将其放入映射为(j, I)的数组eurocpconsole中。我试着:
For j = 0 to CPIndex 'CPIndex is a global count of variables in matrix j references
For i = 0 to UBound (EuroCPCrap,3) 'i in the (now known to be) jagged
EuroCPConsol(j+1,i+1)= EuroCPCrap(j,0,i,0) 'add one since I'm base 1 but function that produced this matrix outputted base zero
Next i
Next j
我在UBound语句上得到一个下标错误,我意识到这是因为在引用的数组中没有第三维度。
首先,我不明白为什么这个EuroCPCrap(j,0,i,0)
会工作,如果它是你在第一句话中描述的锯齿数组。从表面上看,应该是EuroCPCrap(j,0)(i,0)
。
你有一个父二维数组的子二维数组。您正在寻找的"第三"维实际上是每个子数组的第一个维。所以像这样的代码应该可以工作:
For i = 0 to UBound(EuroCPCrap(j,0),1)
实际上,从LBound
迭代到UBound
是更好的实践,以确保遍历整个数组,而不管您的Option Base
或数组如何"暗淡":
For i = LBound(EuroCPCrap(j,0),1) to UBound(EuroCPCrap(j,0),1)
EuroCPCrap
真的需要锯齿吗?为什么不把它做成一个四维数组呢?EuroCPConsol
不是锯齿状的…它的尺寸是否正确以接受子数组中最大的内容?