1

我有几个关于在 VBA 中使用数组的基本问题,但我还没有找到答案。

首先,有没有办法在 Excel VBA 中指定一维行向量?

我是在 Excel VBA 中使用数组的新手,并且一直将行向量和列向量定义为二维数组,如下例所示

'Define a Local Row Vector
ReDim aArray(1 to iCntRows, 1 to 1)

'Define a Local Column Vector
ReDim aArray(1 to 1, 1 to iCntCols)

其次,这是最佳实践吗?我应该改用一维数组吗?

谢谢蒂姆

4

3 回答 3

1

您必须使用转置函数从二维数组转换。

new_array = Application.Transpose(Sheet1.Range("A2:A100").Value)

其中 new_array 是一维数组。

于 2013-02-21T19:02:54.043 回答
1
Sub tt()

    Const SZ As Long = 1000
    Dim arr(), x

    ReDim arr(1 To SZ)
    For x = 1 To SZ
        arr(x) = x
    Next x

    'add to sheet (as a row)
    Sheet1.Range("a1").Resize(1, SZ).Value = arr

    'add to sheet (as a column)
    'note there is an upper limit when using transpose of around 65k
    Sheet1.Range("a5").Resize(SZ, 1).Value = Application.Transpose(arr)

End Sub
于 2013-02-22T02:06:18.460 回答
1

您打算将数组复制到范围的位置,例如

Range(somerange) = aArray

然后,是的,使用二维数组

于 2013-02-21T18:17:59.727 回答