vba - 删除特定列中具有特定值的行

标签 vba excel

Sub main()
   Dim count As Integer
   Dim i As Integer
   count = Range("Q" & Rows.count).End(xlUp).Row
   MsgBox count
   For i = 2 To count
      If Cells(i, "Q").Value = 2 Then
           Sheets(1).Rows(i).EntireRow.Delete
      End If
  Next i
End Sub

为什么代码不能立即运行?当我在 Excel 中执行上述 VBA 代码时,它会删除一些行,然后退出并显示以下消息:

run time error 13 

这是什么意思?有时我会收到这样的消息:

type mismatch

在上面的VBA代码中,我想删除Q列值为2的行,但它不起作用。您能告诉我错误在哪里吗?

让我告诉你发生了什么事。代码正在运行,但它正在删除一些行并因运行时错误 13 中止。当我打开 EXCEL 文件查看 Q 列时,我观察到 Q 列的某些行具有 #REF!.

我认为这可能是原因,但我该如何弥补呢?如何使我的代码正常工作?我有一个包含 1,2 个值的 Q 列。 Q 列中有 2 的行必须删除,我的意思是整行。

最佳答案

如果第 #10 行 == 2,则删除第 #10 行;在循环的下一次迭代中,您检查行#11,该行现在具有行#12 的值,因为它在删除后上移,这意味着您将跳过查看紧邻已删除行下方的任何行。

您可能想向后循环;

Sub main()
   Dim count As Integer
   Dim i As Integer
   '//assuming all filled rows from Q2 downwards?
   count = Range("Q2").End(xlDown).Row

   For i = count To 2 Step -1
      If Cells(i, "Q").Value = 2 Then
           Sheets(1).Rows(i).EntireRow.Delete
      End If
  Next i
End Sub

关于vba - 删除特定列中具有特定值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873611/

相关文章:

excel - 从 Excel 2016 中的 API 获取数据

events - 在 MS Excel 中监听鼠标(拖放)事件

arrays - 打乱数组,以便没有项目保留在同一位置

excel - 将数据框从 pandas 导出到 excel 时丢失数据

python - 如何在 python 中的 xlsxwriter merge_range 函数中添加新行?

arrays - 在进行组合时删除辅助列

excel - 通过 API 将文件另存为 PDF 所需的 Excel 2007 中 PDF 的文件类型号是多少?

memory - Excel 2007 工作簿名称大小限制是多少?为什么?

excel - 从 Excel vba 将“适合”设置为“在 Pdf 中可见”

ms-access - 如何向 Access 报告添加按钮以将其导出到 Excel/PDF?