找到范围时,对象'_worksheet'的方法'Range'失败

时间:2018-01-11 12:35:41

标签: excel vba excel-vba

我正在尝试编写一个宏来将数据从一个工作表复制到另一个工作表。但是,我正在努力编写if语句 - 如果活动工作表是x(在我的情况下是VFO_W1_W2),则删除Cons工作表中的所有数据(在一个范围内)。

Sub CopyVFOW1_W2()
Dim Cons As Worksheet
Dim Active As Worksheet
Dim FirstBlank As Range

Set Active = ActiveSheet
Set Cons = Sheets("VFO_CONS")
Set FirstBlank = Cons.Range("B1").End(xlDown).Offset(1, 0)

If Application.ActiveSheet.Name = ("VFO_W1_W2") Then Cons.Range("A4:Z4", Range("A4,Z4").End(xlDown)).Delete Shift:=xlUp

Active.Range("B8:Z8", Range("B8:Z8").End(xlDown)).Copy
Cons.Activate
FirstBlank.PasteSpecial Paste:=xlPasteFormulas, Transpose:=False

End Sub

特别是,这行代码似乎是问题

Cons.Range("A4:Z4", Range("A4,Z4").End(xlDown)).Delete Shift:=xlUp

错误表明对象'_worksheet'的方法'range'失败。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

向两者添加工作表引用,因为如果在运行代码时另一个工作表处于活动状态,则会出现错误(范围将跨越两个工作表)。另外,我不会依赖活动表,而是根据名称定义Active。

Cons.Range("A4:Z4", Cons.Range("A4,Z4").End(xlDown)).Delete Shift:=xlUp