我有一个名为foobar
的表Range(Cells(2, 1), Cells(11, 2))
(使用Range("foobar[#All]")
来包含标题行)。并且还有从第13行开始的其他表。因此在(即第12行)之间存在空行。表名由我的同事在其他几个宏中使用。现在,我想将一个数组,例如Redim array1(1 To n, 1 To 2)
复制到表格foobar
。如您所见,n是一个变量,我必须确保在从Cells(2, 1)
开始粘贴数组后,它不会覆盖下面的表格,并且表格下方仍有一个空行{{1将它与其他表分开。并且还应该保留foobar的名称。
如何自动调整/添加/减少行以匹配我的数组foobar
,而不是销毁表array1
和其下的表格?
答案 0 :(得分:2)
幸运的是,您在同一行上没有数据和表格,因此任务更容易。此代码段会更改表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