Multidimensional array 如何展开多维数组的第一个索引?

Multidimensional array 如何展开多维数组的第一个索引?,multidimensional-array,vb6,expand,Multidimensional Array,Vb6,Expand,ReDim允许扩展我的阵列。我想循环一个数组并展开它,因为我不知道数组的长度 我发现不可能扩展多维数组的第一个索引 例如: ReDim Preserve Cells(1 To 100, 20) As Integer ' This works. ReDim Preserve Cells(1 To 200, 20) As Integer ' This doesn't. 有解决办法吗?如果没有这个,我想不出如何以优雅的方式编程。我习惯于在C#中编程。您可以将用户定义的类型用于内部数组,并将此用户定义

ReDim
允许扩展我的阵列。我想循环一个数组并展开它,因为我不知道数组的长度

我发现不可能扩展多维数组的第一个索引

例如:

ReDim Preserve Cells(1 To 100, 20) As Integer ' This works.
ReDim Preserve Cells(1 To 200, 20) As Integer ' This doesn't.

有解决办法吗?如果没有这个,我想不出如何以优雅的方式编程。我习惯于在
C#
中编程。您可以将用户定义的类型用于内部数组,并将此用户定义类型的数组用作外部数组

请看以下示例:

Private Type MyArray
  strArray() As String
End Type

Private Sub RedimArray()
  Dim intFirst As Integer, intSecond As Integer
  Dim udt2D() As MyArray
  'resize first dimension
  ReDim udt2D(3) As MyArray
  For intFirst = 0 To UBound(udt2D)
    'resize second dimension for each separately
    intSecond = intFirst * 10 + 1
    ReDim udt2D(intFirst).strArray(intSecond)
  Next intFirst
End Sub

也许是互换指数?没有比这更优雅的方式了;如果需要在两个索引上展开,则需要复制内容或使用某些自定义数据结构。@user2871190:但请注意,这比标准二维数组消耗更多内存。