의 모든 새로운 요소의 내부 배열을 ReDim을해야합니다. 새로운 크기의 배열 (첫 번째 또는 마지막 차원)에이 코드를 처리하기 위해 코드 조각을 작성했습니다. 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 분 같은이 쓴, 그래서 보장은 없다. 그러나 그것을 사용하거나 확장하고 싶다면 자유롭게 생각하십시오. 나는 누군가가 이미 이런 코드를 이미 가지고 있다고 생각했을 것이다. 그래서 여기에 동료 gearheads 이동하십시오.
VB6는 –
@EuroMicelli이 예는 않습니다 배열의 배열을 지원하지 않습니다. 변형의 1 차원 배열을 가질 수 있으며 변형은 배열을 포함 할 수 있습니다. – MarkJ