将表复制到另一个工作表

时间:2015-07-29 14:07:23

标签: excel vba excel-vba

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

我想将这些表复制到另一个工作表(2),其中Table1的左上角位于单元格“A1”的新工作表中,而Table2的左上角单元格位于单元格“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

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

2 个答案:

答案 0 :(得分:4)

您应该可以通过提供目的地直接复制。

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

有关远离依赖选择和激活以实现目标的更多方法,请参阅How to avoid using Select in Excel VBA macros

答案 1 :(得分:1)

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

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