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