【问题标题】:Deleting Rows in Excel VBA在 Excel VBA 中删除行
【发布时间】:2016-07-19 18:19:40
【问题描述】:

以下示例了我尝试运行的代码

For i = 5 To LastRow

Cells(i, 13).Select

    var2 = Cells(i, 13)

    If var2 = 0 Then

    Rows(i).Delete

    Else

    var3 = 1

    End If

Next i

基本上我有一列全是 1 和 0。如果单元格包含零,我需要删除该列。当相邻单元格包含零时,我的问题就出现了。代码将删除单元格,带有零的前一行将向上移动,循环将移动到下一行,缺少向上移动的零。

任何人都有解决方案。

【问题讨论】:

  • 您可以随时过滤所需列中的 0,然后删除过滤后的行

标签: excel vba rows


【解决方案1】:

Rows 是一个collection,因此当您遍历它并删除集合的一部分时,集合的上限会减少。自循环开始以来,它期望集合始终具有相同的大小。

长话短说:在集合中向后循环,那么即使您从中删除某些内容,您也将始终处于相同的相对位置:

'For i = LastRow To 5 step - 1

'Cells(i, 13).Select

' var2 = Cells(i, 13)

' If var2 = 0 Then

' Rows(i).Delete

' Else

' var3 = 1

' End If

'Next i

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2018-02-21
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    相关资源
    最近更新 更多