2016-12-27 60 views
0

我正在使用此vba代码来删除#DIV/0!错误。如果通过VBA发生错误

Sub IFERROR() 
Dim frange As Range, c As Range, 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 
      c.Formula = "=IFERROR(" & Right(c.Formula, Len(c.Formula) - 1) & ","""")" 
     Next c 
    End If 
    Set frange = Nothing 
Next ws 
End Sub 

上面的代码将IFERROR公式中所有的细胞,任何人可以帮我这个VBA代码仅适用于细胞,其显示#DIV/0!

回答

0

看起来CVErr(xlErrDiv0)是你在找什么。您需要先检查单元格是否包含一些错误,因为将CVErr(xlErrDiv0)与不包含错误的单元格值进行比较会导致错误:)。

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.Formula = "=IFERROR(" & Right(c.Formula, Len(c.Formula) - 1) & ","""")" 
        End If 
       End If 
      Next c 
     End If 
     Set frange = Nothing 
    Next ws 
End Sub 
+0

非常感谢。工作正常.............. –

+0

在一些单元格中运行上面的代码后,我得到了这个错误#VALUE!,如何删除这个 –

+0

可能对'c.Value = CVErr(xlErrDiv0 )或c.Value = CVErr(xlErrValue)' – Limak

相关问题