我想写一个代码,检查一张纸中有多少行,然后每隔两行删除一次。该过程应如下所示:
这是我的代码,在第8行activeRow = activeRow - 2
处停止工作。
Sub trendlucid()
Dim numOfRows As Integer
Dim activeRow As Integer
numOfRows = Sheets(actualsheet).UsedRange.Rows.Count
activeRow = numOfRows
Do While activeRow > 1
Rows(activeRow).EntireRow.Delete
activeRow = activeRow - 2
Loop
End Sub
我不知道为什么会停止。有人可以帮我吗?
谢谢你,祝你有美好的一天
答案 0 :(得分:2)
删除行时,请环回:
Sub TestMe()
Dim numOfRows As Long
Dim activeRow As Long
numOfRows = ActiveSheet.UsedRange.Rows.Count
activeRow = numOfRows
Dim i As Long
For i = numOfRows To 1 Step -2
ActiveSheet.Rows(i).EntireRow.Delete
Next i
End Sub
删除行有一种更快的方法,如果先将行保存在一个范围内,最后删除范围。因此,您只能使用一次删除操作:
答案 1 :(得分:1)
您的代码有两个缺陷
不确定表参考
您要计算UsedRange
的{{1}}行的数量
删除Sheets(actualsheet)
行(R ActiveSheet
中隐式引用的表)时
因此请务必参考同一张纸(例如:ows(activeRow).EntireRow.Delete
)
不确定范围参考
ActiveSheet
可能从不同于第1行的行开始,而UsedRange
考虑从第1行开始的行索引
因此引用Rows(index)
UsedRange
而不是Rows()
(隐含假设)ActiveSheet
所有这些总计为:
Rows()
答案 2 :(得分:0)
您必须尝试类似的操作...
您不需要将EntireRow
与Rows
一起使用,只需要Row Index
,并且Delete
动作将对整行执行。
Sub trendlucid()
Dim numOfRows As Long
Dim i As Long
numOfRows = ActiveSheet.UsedRange.Rows.Count
For i = numOfRows To 2 Step -2
Rows(i).Delete
Next i
End Sub