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

时间:2018-10-07 12:16:09

标签: 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

如果我执行此操作,但不在“每日”工作表上,则会收到运行时错误: _worksheet对象的方法范围失败

如果我添加一行

Daily.Activate

工作正常。

有人可以解释它是如何工作的吗?从纸上进行复印之前,我真的必须激活纸吗?

1 个答案:

答案 0 :(得分:3)

这是因为您在引用范围时未指定要使用的工作表,因此它默认为活动工作表:

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

尝试

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