Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Running Windows XP and Office XP.
I am trying to store data returned from a search into a dynamic multidimensional array with the following code, If currentCell.Value Like searchText Then i = i + 1 ReDim Preserve searchResults(i, 4) searchResults(i, 1) = ActiveSheet.Name searchResults(i, 2) = currentCell.Value searchResults(i, 3) = descriptionCell.Value searchResults(i, 4) = priceCell.Value End If having declared the array at the top of the procedure with Dim searchResults() As Variant Problem is that the code always halts with a "subscript out of range" error message when i = 2. If I remove the Preserve then the code runs fine except I only have the last line of search data. Any ideas anybody? |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
From Help on xl2k;
If you use the Preserve keyword, you can resize only the last array dimension and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array. The following example shows how you can increase the size of the last dimension of a dynamic array without erasing any existing data contained in the array. ReDim X(10, 10, 10) .. . . ReDim Preserve X(10, 10, 15) -- Regards; Rob ------------------------------------------------------------------------ "Andy Westlake" <Andy wrote in message ... Running Windows XP and Office XP. I am trying to store data returned from a search into a dynamic multidimensional array with the following code, If currentCell.Value Like searchText Then i = i + 1 ReDim Preserve searchResults(i, 4) searchResults(i, 1) = ActiveSheet.Name searchResults(i, 2) = currentCell.Value searchResults(i, 3) = descriptionCell.Value searchResults(i, 4) = priceCell.Value End If having declared the array at the top of the procedure with Dim searchResults() As Variant Problem is that the code always halts with a "subscript out of range" error message when i = 2. If I remove the Preserve then the code runs fine except I only have the last line of search data. Any ideas anybody? |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
RWN wrote:
From Help on xl2k; If you use the Preserve keyword, you can resize only the last array dimension and you can't change the number of dimensions at all. . . . To bypass these limitations you might want to do a Google search for Harlan Grove's aresize function. Alan Beban |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
When you use the Preserve keyword with a dynamic array, you can change only
the UPPER bound of the last dimension. John "Andy Westlake" wrote: Running Windows XP and Office XP. I am trying to store data returned from a search into a dynamic multidimensional array with the following code, If currentCell.Value Like searchText Then i = i + 1 ReDim Preserve searchResults(i, 4) searchResults(i, 1) = ActiveSheet.Name searchResults(i, 2) = currentCell.Value searchResults(i, 3) = descriptionCell.Value searchResults(i, 4) = priceCell.Value End If having declared the array at the top of the procedure with Dim searchResults() As Variant Problem is that the code always halts with a "subscript out of range" error message when i = 2. If I remove the Preserve then the code runs fine except I only have the last line of search data. Any ideas anybody? |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
VBA syntax help: ReDim Preserve an array | Excel Discussion (Misc queries) | |||
Declare Multidimensional Arrays | Excel Programming | |||
Declare Multidimensional Arrays | Excel Programming | |||
Multidimensional Arrays - VBA | Excel Programming | |||
Multidimensional Arrays - VBA | Excel Programming |