我想从整本工作簿中清除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
答案 0 :(得分:0)
您可以使用以下方式将其关闭完全
Application.ErrorCheckingOptions.BackgroundChecking = False
如果您希望这只影响一个文档,您可以在文档激活/停用时打开/关闭它,也许存储以前的设置等。
答案 1 :(得分:0)
您有两个选择:
关闭错误检查,在@Variatus建议的选项中或使用已发布的代码@CLR。如果您使用此方法,您还将关闭所有打开的文件的错误检查,甚至重新启动Excel。
忽略/清除错误,就像手动操作一样,但代码为:
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
您可以通过仅清除您所拥有的错误类型并避免循环来缩短运行时间。在这里,您是类型列表:
您可以将Errors(5).Ignore
或Errors(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