Excel VBA-复制方法需要激活工作表吗?

Excel VBA-复制方法需要激活工作表吗?,excel,vba,Excel,Vba,以下代码从特定工作表中删除几列,并将剩下的内容复制到单独的工作表中: Sub Test() Daily.Range("C:D,G:G,J:M,O:P").EntireColumn.Delete Daily.Range("A2", Range("A2").End(xlDown).End(xlToRight)).Copy Destination:=Work.Range("C2") End Sub 如果我运行此an,我不在每日工作表上,我会得到一个运行时错误: 对象的方法范围\

以下代码从特定工作表中删除几列,并将剩下的内容复制到单独的工作表中:

Sub Test()

    Daily.Range("C:D,G:G,J:M,O:P").EntireColumn.Delete
    Daily.Range("A2", Range("A2").End(xlDown).End(xlToRight)).Copy Destination:=Work.Range("C2")


End Sub
如果我运行此an,我不在每日工作表上,我会得到一个运行时错误: 对象的方法范围\u工作表失败

如果我加一行

Daily.Activate
它很好用


有人能解释一下它是怎么工作的吗?在从工作表复制之前,我真的必须激活工作表吗?

这是因为您引用的是一个范围,而没有指定要使用的工作表,因此它默认为活动工作表:

Daily.Range("A2", Range("A2").End(xlDown).End(xlToRight)).Copy …
试一试


这是因为您引用的是一个范围,而没有指定要使用的工作表,因此它默认为活动工作表:

Daily.Range("A2", Range("A2").End(xlDown).End(xlToRight)).Copy …
试一试


同时尝试声明工作簿,它不会给您带来任何问题:
Set wb=thispoolk
Set Daily=wb.Sheets(“Daily”)
或任何称为sheet@Damian
Daily
是工作表的代码名,因此工作表的作用域始终是它所在的工作簿。按名称从
Sheets
集合中检索工作簿要脆弱得多。请尝试声明工作簿,它不会给您带来任何问题:
Set wb=thispoolk
Set Daily=wb.Sheets(“Daily”)
或任何称为sheet@Damian
Daily
是工作表的代码名,因此,它的作用域始终是它所在的工作簿。按名称从
Sheets
集合中检索它要脆弱得多。