vba - array 变量的新增功能,无需循环即可实现?

  显示原文与译文双语对照的内容
0 0

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

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

我可以不用循环做这个?

BTW我正在处理一个循环中的每一行,因为不同的行根据列 1中的数据得到不同的处理。

时间:原作者:4个回答

0 0

是的,你可以以简单地将一个区域的值分配给变量变量,然后将值保存在 2-dimensional array 中。

你可以像这样使用它: 在 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 并循环访问两个维度。

原作者:
0 0

当将 range 传递给任何变量时,你可以创建一个 array 。 然而,它是 2维的array 。 为了使它成为一个维,我们需要将它转换为( 两次) 。 因此,代码可以如下所示:

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

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

原作者:
...