如何将ListObject设置为等于另一个ListObject?

时间:2018-02-06 19:52:17

标签: excel-vba vba excel

我想将ListObject设置为另一个ListObject的精确副本,就像您可以将范围设置为另一个范围的精确副本一样。这可能吗?

我尝试了以下但是没有用:

Set destinationWorksheet.ListObjects("tblPriorTable") = sourceWorksheet.ListObjects("Table1")

重要的是" tblPriorTable" ListObject不能删除,因为我的工作簿中有公式引用ListObject,并且当ListObject被删除时这些公式会中断。我只想基本上覆盖" tblPriorTable"的内容。等于另一个ListObject而不删除" tblPriorTable"。

2 个答案:

答案 0 :(得分:2)

ListObject没有.Copy方法,但Range有:

Sub lksdhfs()
    Dim r As Range
    Set r = ActiveSheet.ListObjects(1).Range
    r.Copy Range("g30")
End Sub

enter image description here

注:

副本产生另一个ListObject,而不仅仅是一堆单元格。
确保两个表格不重叠。

答案 1 :(得分:2)

您可以使用以下程序:

Sub Copy_Contents(FromTable As ListObject, ToTable As ListObject)

    With ToTable
        If Not .DataBodyRange Is Nothing Then
            .DataBodyRange.ClearContents
        End If

        .Range(2, 1).Resize(FromTable.ListRows.Count, FromTable.ListColumns.Count).Value = FromTable.DataBodyRange.Value
    End With

End Sub

请注意,它假定您的两个列表对象具有相同的列数。