错误1004,对象'_Worksheet'的方法'范围'失败

时间:2016-05-02 01:19:46

标签: vba excel-vba excel

我有很多数据(数字)带有几个工作表中的标题,我试图将其归零。这在每列上完成,如下所示:获取列中第一行的值,并从列中的所有行中减去该值。

我把这段代码放在一起(可能不是最好的方法,但我是VBA的新手:))

Dim ws As Worksheet
Dim Header As Range, Coldata As Range
Dim firstrow As Long
Dim cell As Range, cell2 As Range

Set ws = ActiveSheet
Set Header = ws.Range("B5:CJ5")

For Each cell In Header
    If cell Is Nothing Then Exit For
    firstrow = cell.Offset(2).Value
    ***Set Coldata = ws.Range(cell.offset(3),cell.Offset(3)).End(xlDown)***
    cell.Value = 0
    For Each cell2 In Coldata
        cell2.Value = cell2.Value - firstrow
    Next
Next
MsgBox "Done zeroing"

这个子目录在我正在处理的工作簿的模块下。每当我从VBA窗口内部运行这个子程序时,它就会给出我在代码行的描述中所说的错误,并在其周围加上****。

当我尝试从工作表运行它时,它表示无法运行宏。宏可能在此工作表中不可用,或者可能禁用所有宏。问题是我在它运行的同一模块中运行另一个宏,因此禁用宏是不可能的。

我错过了什么?

提前致谢!

编辑,我修好了..但是运行它需要花费很多时间?虽然我运行它时Excel会冻结吗?

1 个答案:

答案 0 :(得分:0)

你过分指定了。替换:

Set Coldata = ws.Range(cell.Offset(3)).End(xlDown)

使用:

Set Coldata = cell.Offset(3).End(xlDown)

cell已完全合格。