Excel VBA复制运行时错误'1004'

时间:2015-10-31 18:32:46

标签: excel vba excel-vba

我无法弄清楚我的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错了!

1 个答案:

答案 0 :(得分:4)

您需要Activate该表格,因为Range隐含地引用了活动工作表,并且您错误地假设{{1}某事必然会Select

我已经使用Activate"Sheet1"执行了您的代码,没有任何错误被抛出," Sheet1!F9:G14"选择复制和" Sheet2!E3"选中,这似乎是这段代码想要实现的目标。

仍然,我想说...

避免出现问题,请在VBA代码中避免"Sheet2"Select

表单具有Activate属性,您可以将其从CodeName更改为Sheet1,或OpgaveSheet更改为Sheet2。那么这段代码是有效的:

ReserveSheet

工作表的OpgaveSheet.Range("F9:G14").Copy ReserveSheet.Range("E3") 是Excel中标签中显示的文本。您还可以使用它来获取对工作表的引用:

Name

如果您想使用特定范围,请保留对其的引用,而不是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)将会更好地执行,更容易遵循,调试和维护,并且错误会少得多易发。