2015-02-23 70 views
4

我在具有动态大小的VBA函数中声明了一个数组。因为我不能ReDim二维或更多维数组的第一维,我可以添加第二维到一个数组?ReDim现有的数组与第二维?

这是我如何动态设置我的数组的大小。

Dim nameArray() As String 
Dim arrayCount As Long 

For i = 1 To 100 
    ReDim Preserve nameArray(1 to arrayCount) 
    nameArray(arrayCount) = "Hello World" 
    arrayCount = arrayCount + 1 
Next i 

现在我想添加第二个维度。

ReDim Preserve nameArray(1 To arrayCount, 1 To 5) 

不起作用。

是否有解决方法?

+0

在这里看到,例如:http://stackoverflow.com/questions/27021973/excel-vba-redim-保存错误 – Rory 2015-02-23 11:14:09

回答

6

没有任何内置的方法来做到这一点。只需创建一个新的二维数组,并将现有的一维数组的内容转移到新数组的第一行。

这是这个函数:

Function AddDimension(arr() As String, newLBound As Long, NewUBound As Long) As String() 
    Dim i As Long 
    Dim arrOut() As String 
    ReDim arrOut(LBound(arr) To UBound(arr), newLBound To NewUBound) 
    For i = LBound(arr) To UBound(arr) 
     arrOut(i, newLBound) = arr(i) 
    Next i 
    AddDimension = arrOut 
End Function 

用法示例:

nameArray = AddDimension(nameArray, 1, 5) 
+0

太棒了!谢谢 – 2015-02-24 11:38:31