Arrays 在Excel VBA中使用一维或二维数组

Arrays 在Excel VBA中使用一维或二维数组,arrays,vba,excel,vector,Arrays,Vba,Excel,Vector,我有几个关于在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) 第二,这是最佳实践吗?我应该使用一维

我有几个关于在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)
第二,这是最佳实践吗?我应该使用一维数组吗

谢谢
Tim

用于将数组复制到某个范围,如

Range(somerange) = aArray

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

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

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

新数组是一维数组。

为什么要对一行/一列使用二维数组?因为Excel范围是二维的。我想这就是我开始使用它们的原因!谢谢Chris,我经常将工作表范围读入数组,对其进行操作并将其写回工作表。但是,我还在程序中使用2d数组,该程序仅从工作表中读取范围,以操纵其他数组。你会将这些存储为1d数组吗?嗨,Tim,你介意添加一些注释来解释你的过程在做什么吗?我不知道从中可以学到什么。谢谢,TimYou询问了使用1D阵列的问题。我的例子只是为了说明如何使用它们,一个需要注意的问题(1D数组在被分配到柱形范围之前需要进行转置),谢谢Tim,非常感谢!
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