我正在尝试编写一个宏来将数据从一个工作表复制到另一个工作表。但是,我正在努力编写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'失败。
任何帮助都将不胜感激。
答案 0 :(得分:1)
向两者添加工作表引用,因为如果在运行代码时另一个工作表处于活动状态,则会出现错误(范围将跨越两个工作表)。另外,我不会依赖活动表,而是根据名称定义Active。
Cons.Range("A4:Z4", Cons.Range("A4,Z4").End(xlDown)).Delete Shift:=xlUp