VBA 删除活动单元格的值为零的行

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:55:27
我要删除J列值为零的行,可总有那么几行删不掉,是什么原因啊?
代码如下:
For Each y In Range("J2:J65536")
y.Activate
If ActiveCell.Value = "" Then
Exit For
ElseIf ActiveCell.Value = 0 Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Activate
End If
Next
这段代码有问题吗?

不能全部删除的原因是,比如你第3-5行的J列都是0,当执行了J3时删除了第3行,接着原来的J4变成了J3,但程序紧接着会执行到J4,这样的第3行的空就被忽略了。你可以多执行几次你的代码,或者采用楼上的朋友说的倒序方法写程序即可。

你可以按F8逐步观察代码的执行,定位错误原因

注意是你的循环错了,弄成倒序的就OK了。
解释下:你现在的循环是顺序的,比如你删除了第二行,那么原来的第三行就是现在的第二行了,原来的第四行就是现在的第三行了,所以你这样执行下去肯定会有些行其实没有取到,而使得你删除不干净。如果倒序就不会影响到其他的行的。

可能 那几行的格式不是数值格式。你可以逐行检查一下。