<-- Previous || Up || Next -->

Re Dim Preserve Variant Cube Function
Array Conversions Class

Public Function ReDimPreserveVariantCube( _
      ByRef rCube() As Variant _
    , Optional ByVal vLBound1 As Variant _
    , Optional ByVal vUBound1 As Variant _
    , Optional ByVal vLBound2 As Variant _
    , Optional ByVal vUBound2 As Variant _
    , Optional ByVal vLBound3 As Variant _
    , Optional ByVal vUBound3 As Variant _
    ) As Boolean

"Re-dimension Preserve Variant Cube"
Redimensions a three-dimensional array of Variants.
Preserves all elements that existed both before and after the re-dimension.

Summary: This function works around a limitation in Visual Basic's ReDim Preserve statement. It allows you to redimension any or all bounds of a three-dimensional array while preserving the contents of the elements that existed both before and after. New elements are left Empty.
Example:
    Assuming
       Dim avarNums() As Variant
       ReDim avarNums(0 To 5, 0 To 10, 0 To 15)
       avarNums(1, 1, 1) = .45
       avarNums(2, 3, 4) = .12
       ' ....
    for example
       ' Same as ReDim Preserve avarNums(-5 To 10, 0 To 10, 0 To 15)
       ' if Visual Basic would allow it.
       ReDimPreserveVariantCube(avarNums(), -5, 10) = True
    leaves
       avarNums(1, 1, 1) = .45
       avarNums(2, 3, 4) = .12
       ' Etc.
See also:
    ReDimPreserveVariantMatrix Function
    ReDimPreserveVariantVector Function
    BasicExtensions Class
    ReDim Preserve Statement (Visual Basic)
rCube: Dynamic, three-dimensional array of Variant values that will be redimensioned. rCube must already be dimensioned before it is passed to this function or else an error will occur.
vLBound1: New lower bound for the first dimension. If vLBound1 is missing or Null or cannot be fixed-up to a number, it defaults to the current lower bound for the dimension (LBound(rCube, 1)).
vUBound1: New upper bound for the first dimension. If vUBound1 is missing or Null or cannot be fixed-up to a number, it defaults to the current upper bound for the dimension (UBound(rCube, 1)).
vLBound2: New lower bound for the second dimension. Defaults to LBound(rCube, 2) if missing or ....
vUBound2: New upper bound for the second dimension. Defaults to UBound(rCube, 2) if missing or ....
vLBound3: New lower bound for the third dimension. Defaults to LBound(rCube, 3) if missing or ....
vUBound3: New upper bound for the third dimension. Defaults to UBound(rCube, 3) if missing or ....
Return value: Function currently always returns True.
v1.2 BugFix: Renamed argument rMatrix to rCube.

Return to ENTISOFT Home Page

Copyright © 1999-2005 Entisoft