Excel自动筛选器错误

休斯

我正在尝试使用下面的代码在任何使用#DIV / 0的单元格上进行自动过滤,但是即使A列中存在上述错误,它也会不断返回“ Some Other Error”。

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
迈克·D

正如R跨整个列的多单元格范围一样,没有.Value属性。

调试,直到执行该Set R = ...语句,然后R在“本地”窗口中检查的属性

其次,在解释您的Else / Debug.Print分支时,您只在寻找包含任何error的单元格您的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. 否则什么都不会发生

如果为1,2,则循环立即终止-无需进一步检查

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章