Excel VBA副本运行时错误“1004”

我无法弄清楚我的VBA有什么问题:

Private Sub CommandButton4_Click() Sheets("Opgave").Select Range("F9:G14").Select Selection.Copy Sheets("Reserve").Select Range("E3").Select End Sub 

Excel表示Range("F9:G14").Select错误!

您需要Activate表,因为“ Range隐式指向活动工作表,而您错误地假定“ Select某件事”必须Activate它。

我已经用"Sheet1""Sheet2"执行了你的代码,没有任何错误被抛出,select“Sheet1!F9:G14”复制和select“Sheet2!E3”,这似乎是这个代码想要实现的。

不过,我想说…

避免问题,避免在VBA代码中SelectActivate

工作表具有CodeName属性,您可以从Sheet1更改为OpgaveSheetSheet2更改为ReserveSheet 。 那么这个代码是有效的:

 OpgaveSheet.Range("F9:G14").Copy ReserveSheet.Range("E3") 

工作表的Name是在Excel的选项卡中显示的文本。 您也可以使用它来获取对工作表的引用:

 Dim opgaveSheet As Worksheet Set opgaveSheet = ThisWorkbook.Worksheets("Opgave") Dim reserveSheet As Worksheet Set reserveSheet = ThisWorkbook.Worksheets("Reserve") 

当你想要使用特定的范围时,请保留对它的引用,而不是Select它并使用Selection

 Dim source As Range Set source = opgaveSheet.Range("F9:G14") Dim destination As Range Set destination = reserveSheet.Range("E3") source.Copy destination 

不经常与工作表交互的代码(通过SelectActivate )将会更好地执行,更易于跟踪,debugging和维护,而且会更容易出错。