Excel自动筛选器错误

时间:2015-06-24 15:05:28

标签: excel-2007

我正在尝试使用下面的代码在#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

1 个答案:

答案 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. 检测#DIV / 0!自动过滤器设置错误
  2. 检测到发出debug.print的任何其他错误
  3. 否则没有任何反应
  4. 在1,2的情况下,循环立即终止 - 不再进一步检查