我有很多数据(数字)带有几个工作表中的标题,我试图将其归零。这在每列上完成,如下所示:获取列中第一行的值,并从列中的所有行中减去该值。
我把这段代码放在一起(可能不是最好的方法,但我是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会冻结吗?
答案 0 :(得分:0)
你过分指定了。替换:
Set Coldata = ws.Range(cell.Offset(3)).End(xlDown)
使用:
Set Coldata = cell.Offset(3).End(xlDown)
cell
已完全合格。