excel - 如果 Cell = 0,则对于每个循环删除行

标签 excel vba

我正在尝试编写一个宏,如果给定范围内的单元格 = 0,它将删除一行。我遇到的问题是,当 For Each 循环运行时,它会找到单元格并删除该行,但如果它下面的行也有一个 0,它最终会被代码跳过,因为代码已经移动到下一个范围。我正在寻找一个宏,它可以在一系列单元格中找到 0,并在该单元格范围内循环,直到该单元格大于 0。
我已经把它作为一项正在进行的工作......

Sub Pub_Clean()

Dim IRange As Range
Dim VRange As Range
Set VRange = Range(ActiveSheet.Range("b3"), ActiveSheet.Range("b3").End(xlDown))
    For Each IRange In VRange
    If IRange = 0 Then
    IRange.EntireRow.Delete
    End If
    Next IRange
End Sub

最佳答案

删除时,典型的做法是从底部开始向上循环。这需要一个索引指定的循环,而不是 FOR EACH。以下是一些细节:

For I=TotalRows To 1 Step -1 
    Set c = Range("C" & I) 
     ' code to check for criteria and delete if required
Next I 

取自这里:
http://www.ozgrid.com/forum/showthread.php?t=56516

关于excel - 如果 Cell = 0,则对于每个循环删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364714/

相关文章:

vba - excel vba项目未关闭

ms-access - 在 Access 2010 中构建搜索表单

Excel - 动态图表 x 轴 - 忽略没有数据的 x 类别

macos - 获取Apple Mac系统的唯一机器号

对数百个 Excel 工作簿中的相同单元格求和

excel - 将形状添加到范围(.AddShape 方法)

excel - 如何将Excel表格粘贴到word中而不丢失行高

c# - npoi 垂直对齐中心

excel - 如何检测用户窗体控件是否因鼠标单击或选项卡而失去焦点/兴奋

excel - 可对单元格内的值进行分组的反转函数