Excel 自动过滤器错误

Excel autofilter errors

我正在尝试使用下面的代码对任何带有#DIV/0 的单元格进行自动过滤,但是它一直返回 "Some Other Error",即使 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 = ...语句,然后检查Localswindow.[=21=中R的属性]

其次 - 解释您的 Else / Debug.Print 分支,您只查找包含 任何错误 的单元格。您的 Else 分支也将针对包含任何错误的 not 单元格执行。所以你的 Else 分支应该附加到 inner 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. 否则什么也不会发生

在 1,2 的情况下,循环立即终止 - 无需进一步检查