我正在尝试使用下面的代码对任何具有#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
由于R
是一个跨越整列的多单元格范围,因此不存在.Value
属性。
调试直到执行Set R = ...
语句,然后在Locals窗口中检查R
的属性。
第二,在解释Else / Debug.Print
分支时,您只查找包含任何错误的单元格。对于不包含任何错误的单元格,也将执行Else
分支。因此,您的Else
分支应连接到内部If
最后,不能提供错误值作为.Autofilter
的参数。。。而是使用字符串CCD_ 10。
嘲笑这一切。。。
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
所以这里是
- 检测到#DIV/0!设置自动筛选器时出错
- 在检测到任何其他错误时,将发出debug.print
- 否则什么都不会发生
在1,2的情况下,循环立即终止-不再检查