在尝试使用vba删除一系列行时获取下一行。 哪里不对

Sub Keeptop3() Dim lastrow As Integer lastrow = ActiveSheet.UsedRange.Rows.Count For i = 4 To lastrow Rows(i).Delete Next i End Sub 

我用lastrow来查找行数。 我只需要最上面的3行。 我得到他们加上第五排。

当我i = 4时,我得到了前两排和第四排。

我的代码有什么问题?

删除行时,反向工作是个好主意。 尝试这个:

 Sub Keeptop3() Dim lastrow As Integer lastrow = ActiveSheet.UsedRange.Rows.Count For i = lastrow to 4 Step -1 Rows(i).Delete Next i End Sub 

如果只想保留前3行, (删除所有其他内容) 。 然后删除从第四行到最后一行的范围,validation最后一行高于3. 如果是这种情况 ,则不需要逐一进行。

请参阅下面的代码(注意LastRowvariables的DataType的更改)

 Sub Keeptop3() Dim lastrow As Long With ActiveSheet lastrow = .UsedRange.SpecialCells(xlLastCell).Row If lastrow > 3 Then .Rows("4:" & lastrow).Delete End With End Sub 

取代这个:

 lastrow = ActiveSheet.UsedRange.Rows.Count 

有了这个:

 lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row