Excel VBA - 简化记录代码时出现运行时错误1004

Excel VBA - runtime error 1004 when simplifying recorded code

我有一个录制的宏,我试图通过将多个激活和 select 语句放在一行中来简化它,但这会导致运行时错误。

这不是严重问题,但我只是想了解发生了什么。这是我的初始代码片段(它前面是过程中的复制片段):

ThisWorkbook.Activate  
Sheets("MS Act Report").Select  
Range("G1").Select  
ActiveSheet.Paste  

这是我的简化代码:

ThisWorkbook.Activate  
Sheets("MS Act Report").Range("G1").Select  
ActiveSheet.Paste    

当 运行 这个我得到一个

runtime error '1004': Select method of Range class failed

您只能在活动 sheet 上 select 个范围。如果 "MS Act Report" 不是活动的 sheet,则不能对其单元格发出 .select 命令。为了简化代码,不要复制粘贴,只需使范围相等即可。

Thisworkbook.WorkSheets("MS Act Report").Range("G1:I5").Value= _
  ActiveWorkbook.Worksheets("Whatever").Range("a1:c5").Value

部分推荐读物:How to avoid using select