Excel忽略错误(清除绿色三角形)

时间:2017-05-19 08:59:04

标签: excel-vba vba excel

我想从整本工作簿中清除excel "绿色三角形错误" ,因为我准备了以下vba代码并且没有清除错误。请帮我纠正我的代码。它在每个Excel工作表中消耗更多时间(通过单击单元格的一角并选择忽略错误)

Sub IFERROR()
    Dim ws As Worksheet
    For Each ws In Worksheets
        On Error Resume Next
        Set frange = ws.Cells.SpecialCells(xlCellTypeFormulas)
        On Error GoTo 0
        If Not frange Is Nothing Then
            For Each c In frange
                If IsError(c.Value) Then
                    If c.Value = CVErr(xlErrDiv0) Then
                        c.Clear
                    End If
                End If
            Next c
        End If
        Set frange = Nothing
    Next ws
End Sub

3 个答案:

答案 0 :(得分:0)

您可以使用以下方式将其关闭完全

Application.ErrorCheckingOptions.BackgroundChecking = False

如果您希望这只影响一个文档,您可以在文档激活/停用时打开/关闭它,也许存储以前的设置等。

答案 1 :(得分:0)

您有两个选择:

  1. 关闭错误检查,在@Variatus建议的选项中或使用已发布的代码@CLR。如果您使用此方法,您还将关闭所有打开的文件的错误检查,甚至重新启动Excel。

  2. 忽略/清除错误,就像手动操作一样,但代码为:

    Dim rCell As Range
    Dim i As Integer
    
    For Each rCell In Your_Range
        For i = 1 To 9
            rCell.Errors(i).Ignore = True
        Next i
    Next rCell
    

    您可以通过仅清除您所拥有的错误类型并避免循环来缩短运行时间。在这里,您是类型列表:

    1. xlEvaluateToError
    2. xlTextDate
    3. xlNumberAsText
    4. xlInconsistentFormula
    5. xlOmittedCells
    6. xlUnlockedFormulaCells
    7. xlEmptyCellReferences
    8. xlListDataValidation
    9. xlInconsistentListFormula
  3. 您可以将Errors(5).IgnoreErrors(xlOmittedCells).Ignore写得更清楚。

答案 2 :(得分:0)

mikerickson shared an excellent solution可禁用错误检查并在关闭时恢复用户的原始设置:

Dim PriorErrorChecking As Boolean

Private Sub Workbook_Open()
 PriorErrorChecking = Application.ErrorCheckingOptions.BackgroundChecking
 Application.ErrorCheckingOptions.BackgroundChecking = False 
End Sub 

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
 Application.ErrorCheckingOptions.BackgroundChecking = PriorErrorChecking
End Sub