如何将数组输出到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