数组变量的新手 - 我可以在没有循环的情况下这样做吗?

时间:2013-05-23 21:02:09

标签: vba ms-access

我正在使用VBA将数据从Excel电子表格导入Access数据库。我有一个数组变量(数据)设置了17个元素,并具有以下代码从电子表格的单行导入17个值:

For i = 1 To 17
    data(i) = Cells(Line.Row, i).Value
Next i

我可以在没有循环的情况下这样做吗?

顺便说一句 - 我也在循环中处理电子表格的每一行,因为不同的行根据第1列中的数据得到不同的处理。

2 个答案:

答案 0 :(得分:1)

是的,您可以简单地将Range的值分配给变量变量,然后将值保存在二维数组中。

您可以像这样使用它: 在debug.print行中,第一个维度引用该行,此处始终为1。

Sub test()
    Dim v
    Dim line As Range
    Dim i As Long

    Set line = Range("A2:Q2")
    v = line.Value

    ' accessing the values:
    For i = LBound(v, 2) To UBound(v, 2)
        Debug.Print v(1, i)
    Next

End Sub

如你所说,你也在迭代多行,你也可以将整个范围分配给v并迭代这两个维度。

答案 1 :(得分:0)

range传递给任何变量时,您可以创建一个数组。但是,它将是二维数组。为了使它成为一维的,我们需要转置它(两次)。所以,代码可以如下:

data = Application.Transpose(Application.Transpose(Range(Cells(Line.Row, 1), _
                                                        Cells(Line.Row, 17))))

一个更重要的信息 - 此data array将以索引1开始,而不是默认为0.