1

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

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

我可以在没有循环的情况下执行此操作吗?

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

4

2 回答 2

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

正如您所说的,您也正在迭代多行,您还可以将整个 Range 分配给v并在两个维度上进行迭代。

于 2013-05-24T16:17:15.343 回答
0

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

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

一个更重要的信息 - 这data array将从索引 1 而不是默认的 0 开始。

于 2013-05-23T21:16:42.510 回答