删除 Excel VBA 中的行
Deleting Rows in Excel VBA
以下举例说明了我正在尝试的代码 运行
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。如果单元格包含零,我需要删除该列。当相邻的单元格包含零时,我的问题就来了。该代码将删除该单元格,带有零的前一行将向上移动并且循环将移动到下一行,丢失向上移动的零。
任何人对此都有解决方案。
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
以下举例说明了我正在尝试的代码 运行
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。如果单元格包含零,我需要删除该列。当相邻的单元格包含零时,我的问题就来了。该代码将删除该单元格,带有零的前一行将向上移动并且循环将移动到下一行,丢失向上移动的零。
任何人对此都有解决方案。
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