新的数组变量-我可以做到这一点没有循环



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

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

我可以不使用循环吗?

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

是的,你可以简单地将Range的值赋给一个变量,然后它将在一个二维数组中保存这些值。

你可以这样使用它:在调试。打印行,第一个维度指的是行,在这里总是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并迭代两个维度。

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

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

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

相关内容

最新更新