我无法弄清楚我的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
错了!
答案 0 :(得分:4)
您需要 Activate
该表格,因为Range
隐含地引用了活动工作表,并且您错误地假设{{1}某事必然会Select
。
我已经使用Activate
和"Sheet1"
执行了您的代码,没有任何错误被抛出," Sheet1!F9:G14"选择复制和" Sheet2!E3"选中,这似乎是这段代码想要实现的目标。
仍然,我想说...
"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
)将会更好地执行,更容易遵循,调试和维护,并且错误会少得多易发。