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代码中Select
和Activate
。
工作表具有CodeName
属性,您可以从Sheet1
更改为OpgaveSheet
或Sheet2
更改为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
不经常与工作表交互的代码(通过Select
和Activate
)将会更好地执行,更易于跟踪,debugging和维护,而且会更容易出错。