vba - 如何在vba上在一种条件下自动删除完整行?

标签 vba excel loops

我是 VBA 初学者。我有以下简单的循环代码,以便从数据库中删除第 9 列单元格上具有“na”值的行:

Dim n As Integer
n = 500

  For i = 1 To n
  If Cells(i, 9).Value = "n.a." Then
    Rows("i:i").Select
    Selection.Delete Shift:=xlUp

   End If
  Next i

End Sub

但是我收到 1004 错误,有人可以帮助我吗?

最佳答案

Option Explicit

Public Sub TestMe()

    Dim n As Integer
    n = 500

    For i = n To 1 Step -1
        If Cells(i, 9).value = "n.a." Then
            rows(i & ":" & i).Select
            Selection.Delete Shift:=xlUp
        End If
    Next i

End Sub

每当您删除行时,请从最大到最小开始执行。稍后您可以谷歌如何避免 Select 以及如何使用 Union 以便一步完成删除。最后,您可以将 Integer 替换为 Long

关于vba - 如何在vba上在一种条件下自动删除完整行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218049/

相关文章:

在多个子文件夹中搜索文件的VBA宏

forms - 迭代动态嵌套表单控件 Angular 2

ms-access - 在 Access 2013 中使用 VBA 打开 Word 文档

excel - 如何另存为pdf?

vba - 带有千位分隔符和小数(如果需要)的数字格式

excel - 如何在 Microsoft Solver Foundation OML 中强制执行平方数约束?

excel - 在 pandas 数据框架上使用运算符链接来读取数据、删除不需要的列、重命名列以及读取几行

Excel VBA : 2 dimensional array search, 检查单元格是否为空

r - 在 R 中迭代以拼写检查单词向量

vba - Excel 循环在尝试操作数据后挂起 (VBA)