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/