如何将数组输出到Excel VBA中的表中?
我有一个名为foobar
的表Range(Cells(2, 1), Cells(11, 2))
Range("foobar[#All]")
Range(Cells(2, 1), Cells(11, 2))
(使用Range("foobar[#All]")
来包含标题行)。 还有从第13行开始的其他表。因此,在第12行之间有一个空行。 表名是我的同事在其他几个macros中使用的。 现在,我想复制一个数组,例如Redim array1(1 To n, 1 To 2)
到表foobar
。 正如你所看到的,n是一个variables,我必须确保从Cells(2, 1)
开始粘贴数组后,它不会覆盖下面的表,并且表foobar
下面还有一个空行来分隔它从其他表中。 而foobar的名字也应该保留。
如何自动调整/添加/减less行匹配我的数组array1
而不是销毁表foobar
和其他表下面的表?
幸运的是,你没有在同一行上的数据和表格,所以这个任务更容易。 这个代码片段改变了表格foobar
的内容,而不影响它下面的表格。
Sub ChangeTableToArray(tbl As ListObject, ar) Dim newRows As Long: newRows = 1+ UBound(ar,1) - LBound(ar,1) If Not tbl.DataBodyRange Is Nothing Then tbl.DataBodyRange.EntireRow.Delete If newRows > 1 Then tbl.HeaderRowRange.Resize(newRows - 1).Offset(2).EntireRow.Insert tbl.HeaderRowRange.Resize(newRows, 1+UBound(ar,2)-LBound(ar,2)).Offset(1).Value = ar End Sub
Sub Testing() Dim n As Long: n = 15 ReDim ar(1 To n, 1 To 2) For n = 1 To n ar(n, 1) = n ar(n, 2) = n * n Next ChangeTableToArray Sheet2.ListObjects("foobar"), ar End Sub