我在工作表(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
这似乎很简单,因为它部分有效,但我认为我有语法错误。
答案 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")