我正在使用VBA将数据从Excel电子表格导入Access数据库。我有一个数组变量(数据)设置了17个元素,并具有以下代码从电子表格的单行导入17个值:
For i = 1 To 17
data(i) = Cells(Line.Row, i).Value
Next i
我可以在没有循环的情况下这样做吗?
顺便说一句 - 我也在循环中处理电子表格的每一行,因为不同的行根据第1列中的数据得到不同的处理。
答案 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.