将表复制到另一个工作表

在工作表(1)中有两个表,“表1”和“表2”。

我想将这些表复制到另一个工作表(2),其中Table1的左上angular位于单元格“A1”的新工作表中,Table2的左上angular单元格位于单元格“O1”的新工作表中。

除非ActiveCell在Sheet2中为A1,否则表格将不会正确复制和粘贴。 我没有正确激活表单吗?

Sub CopyTables() Worksheets(2).Activate 'must be on ExHouStorm or Worksheet(1) Worksheets(1).ListObjects("Table1").Range.Copy Worksheets(2).Paste Worksheets(1).ListObjects("Table2").Range.Copy Worksheets(2).Range("O1").Select Worksheets(2).Paste End Sub 

这似乎很简单,因为它部分工作,但我认为我有一个语法错误。

您应该能够通过提供目的地直接复制。

 Sub CopyTables() Worksheets(1).ListObjects("Table1").Range.Copy _ Destination:=Worksheets(2).Range("A1") Worksheets(1).ListObjects("Table2").Range.Copy _ Destination:=Worksheets(2).Range("O1") End Sub 

通过直接明确地处理对象及其目的地,您可以避免.Activate.Select

请参阅如何避免使用Excel中的selectVBAmacros来获取更多的方法来摆脱依靠select和activate来实现您的目标。

另一种方法,更简单和更短:

 Range("Table1[#All]").copy Range("L1")