永发信息网

请教 如何在VBA中写代码删除已知行号的行

答案:1  悬赏:40  手机版
解决时间 2021-04-02 11:32
  • 提问者网友:欲劫无渡
  • 2021-04-02 06:29
请教 如何在VBA中写代码删除已知行号的行
最佳答案
  • 五星知识达人网友:傲气稳了全场
  • 2021-04-02 07:09
删除行的方法用错了,应该是:
Rows(rng.Row).Delete或者是:
rng.EntireRow.Delete另外,在for循环中删除行是一个非常微妙的事情,因为当删除了一行以后,下一行将变成当前行,而NEXT命令之后,“下一行”就变成了被删除行之后的第二行,也就是会跳过一行。
因此,如果是For Each ... Next这样的循环,就比较为难,建议另外用一个数组记录需要删除的行号,然后另外用一个循环进行删除操作。
或者是改用:
For r = 65536 to 1 Step -1从最后一行开始向上循环遍历,对于符合条件的行,用以下语句进行删除:

Rows(r).Delete题外话,为了提高程序效率,不要从第65536行开始循环,而是从有数据的最后一行开始:

For r = Range("A65536").End(xlUp).Row to 1 Step -1
追问:请问如何选中行,最后一块删除
追答:还是从下往上删除比较简便:

Sub 报表()
Application.ScreenUpdating = False
Sheets("sheet1").Activate

For r = Range("A65536").End(xlUp).Row To 1 Step -1
    If InStr("装配厂,配件厂,仓库", LTrim(RTrim(Range("A" & r).Value))) >= 1 Then
        Rows(r).Delete
    End If
Next r
Application.ScreenUpdating = True
End Sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯