检测Excel工作表上的错误

时间:2012-11-05 11:59:12

标签: excel excel-vba vba

是否有一种简单的方法来枚举某个范围内的错误?

我尝试使用以下代码,但它不起作用

Dim err As Object

For Each err In Plan10.Range("M2:AB8000").Errors
    Debug.Print err.Value
Next err

我从文档中知道,我不能简单地使用range.errors枚举错误。 我解决了扫描范围内每个单元格中的每个错误的问题,但这很痛苦

有没有更好的方法来完成这项工作?

1 个答案:

答案 0 :(得分:4)

您可以使用SpecialCells检索包含/评估为错误的单元格

如果搜索范围中没有错误单元格,错误处理可以避免VBA错误

然后,您可以根据需要处理错误范围(如果存在于rng1rng2中)

Sub GetErrors()
Dim rng1 As Range
Dim rng2 As Range
On Error Resume Next
Set rng1 = Sheets(1).Range("M2:AB8000").SpecialCells(xlConstants, xlErrors)
Set rng2 = Sheets(1).Range("M2:AB8000").SpecialCells(xlFormulas, xlErrors)
On Error GoTo 0
If Not rng1 Is Nothing Then MsgBox "Constant errors at " & rng1.Address
If Not rng2 Is Nothing Then MsgBox "Formulae errors at " & rng2.Address
End Sub