尝试删除包含0

时间:2019-08-16 17:10:49

标签: excel vba

我正在创建一个宏,以删除在AN列中其单元格的值为0的每一行。

这是我使用的代码:

Sub DeleteRow()

Dim lastrow As Long, r As Long

lastrow = Cells(Rows.Count, "AN").End(xlUp).Row

For r = lastrow To 2 Step -1
If Cells(r, "AN") = 0 Then
Rows(r).EntireRow.Delete
End If
Next r

End Sub

此代码为“ If Cells(r,“ AN”)= 0 Then“行产生“不匹配”错误。我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:2)

我将使用Range而不是Cells

If [ActiveSheet.]Range("AN" & r) = 0 Then

请注意,您应该始终将RangeCellsRowsColumnsNames成员调用限定为具有适当的Worksheet对象参考-否则,您将隐式地处理碰巧为ActiveSheet的任何工作表,并且只要活动工作表不是代码所假定的工作表,都有可能导致错误。除非代码是写在工作表的后台代码中,否则隐式限定符为Me,并且将其明确表示也无妨。

但这不能解决问题。

问题是,您假设您正在读取的单元格包含与0在法律上可比的值。将单元格值与0""进行比较时,抛出类型不匹配错误,请查看工作表:很可能存在#N/A或{{1} }工作表错误。

工作表错误值是一种特殊的数据类型:#VALUE!,该数据类型的值不能与Variant/Error值以外的任何值进行比较-类型不匹配错误是否则提出。

因此,在使用值进行任何操作之前,请确保您没有在查看单元格错误:

Variant/Error