我正在尝试使用下面的代码在#DIV / 0的任何单元格上自动过滤,但是即使A列中存在上述错误,它也会一直返回“其他错误”。
Sub asdf2()
Dim R As Range
Set R = Range("A:A")
If IsError(R.Value) = True Then
If R.Value = CVErr(xlErrDiv0) Then
With R
.AutoFilter field:=1, Criteria1:=R.Value
End With
End If
Else
Debug.Print "Some other error"
End If
End Sub
答案 0 :(得分:1)
由于R
是跨越整列的多单元格范围,因此没有.Value
属性。
调试,直到执行Set R = ...
语句,然后在 Locals 窗口中检查R
的属性。
其次 - 解释您的Else / Debug.Print
分支,您只查找包含任何错误的单元格。您的Else
分支也将针对包含任何错误的 单元格执行。因此,您的Else
分支应附加到内部 If
最后,您无法提供错误值作为.Autofilter
的参数...请改用字符串Criteria1:="#DIV/0!"
。
嘲笑这一切......
Sub asdf2()
Dim R As Range, C As Range
Set R = Range("A:A")
For Each C In R.Cells
Debug.Print C.Value
If IsError(C.Value) = True Then
If C.Value = CVErr(xlErrDiv0) Then
With R
.AutoFilter field:=1, Criteria1:="#DIV/0!"
End With
Else
Debug.Print "Other Error"
End If
Exit For
End If
Next C
End Sub
所以这里
在1,2的情况下,循环立即终止 - 不再进一步检查