02-18-2014, 12:07 AM
Redim will erase all the existing elements from the array, and Redim Preserve does not work on 2-D(or multidimensional array).
Venkatesh, you can first resize the array keeping the old elements intact and then you can assign the value of the 2nd array to first.
I have written the following function which can be used as Redim Preserve on 2-D array.
you can make the function robust by using conditions that would check that the new dimension is more than the previous dimension.
Tweak the code and apply logic. you should get it !!
Venkatesh, you can first resize the array keeping the old elements intact and then you can assign the value of the 2nd array to first.
I have written the following function which can be used as Redim Preserve on 2-D array.
Code:
'function to increase the size of Array "arr"
'newubound_1 = new no of rows
'newubound_2= new no. of columns
Function ArrayPreserve(arr,newubound_1,newubound_2)
'retrieve the existing dimensions of the array
oldubound_1 = CInt(UBound(arr,1))
oldubound_2 = CInt(UBound(arr,2))
'Create a new array of the same dimension
ReDim arr_new (oldubound_1,oldubound_2)
'copy the original array to the new array
For i = 0 To oldubound_1
For j = 0 To oldubound_2
arr_new(i,j) = arr(i,j)
Next
Next
'resize the new array
ReDim arr(newubound_1,newubound_2)
'copy the new array back to Original resized array
For i = 0 To oldubound_1
For j = 0 To oldubound_2
arr(i,j) = arr_new(i,j)
Next
Next
' erase the arr_new
Erase arr_new
End Function
you can make the function robust by using conditions that would check that the new dimension is more than the previous dimension.
Tweak the code and apply logic. you should get it !!