我碰到这个问题,跌跌撞撞,同时击中这条道路封锁自己的所有新元素。我最后写一段代码,真正的快到一个新的大小的数组(第一个或最后一个维度)在处理这个ReDim Preserve
。也许它会帮助其他面临同样问题的人。
所以对于使用,可以说你有你的阵列最初设定为MyArray(3,5)
,和你想的尺寸(第一呢!)放大,让刚刚说MyArray(10,20)
。你会习惯做这样的事情吗?
ReDim Preserve MyArray(10,20) '<-- Returns Error
但不幸的是,由于您尝试更改第一个维度的大小而返回错误。所以用我的功能,你只需要这样做,而不是:
MyArray = ReDimPreserve(MyArray,10,20)
现在数组更大,数据被保留。您的多维数组的ReDim Preserve
已完成。 :)
最后但并非最不重要的,神奇的功能:ReDimPreserve()
'redim preserve both dimensions for a multidimension array *ONLY
Public Function ReDimPreserve(aArrayToPreserve,nNewFirstUBound,nNewLastUBound)
ReDimPreserve = False
'check if its in array first
If IsArray(aArrayToPreserve) Then
'create new array
ReDim aPreservedArray(nNewFirstUBound,nNewLastUBound)
'get old lBound/uBound
nOldFirstUBound = uBound(aArrayToPreserve,1)
nOldLastUBound = uBound(aArrayToPreserve,2)
'loop through first
For nFirst = lBound(aArrayToPreserve,1) to nNewFirstUBound
For nLast = lBound(aArrayToPreserve,2) to nNewLastUBound
'if its in range, then append to new array the same way
If nOldFirstUBound >= nFirst And nOldLastUBound >= nLast Then
aPreservedArray(nFirst,nLast) = aArrayToPreserve(nFirst,nLast)
End If
Next
Next
'return the array redimmed
If IsArray(aPreservedArray) Then ReDimPreserve = aPreservedArray
End If
End Function
我写了这20分钟就好,所以没有保证。但是如果您想使用或扩展它,请随时取用。我本来以为有人会在这里有这样的代码,显然不是。所以,在这里,你们会变成同类的减速机。
VB6不支持数组 – 2013-05-05 05:54:55
@EuroMicelli是它的阵列。您可以有一维变体阵列,变体可以包含数组。 – MarkJ 2013-09-10 11:45:15