在Row和Delete Cell中找到#REF

时间:2015-06-04 19:09:33

标签: excel vba excel-vba excel-2010

我在Excel 2010中有一个电子表格,有时会出现引用错误。我想清除该特定行中的单元格;即。清除第7行中包含引用错误的所有单元格。我遇到了一些麻烦。

Sub Check_Ref()

Dim rng As Range
Dim rngError As Range
Dim cell as 'something

Set rng = Sheets("All Projects").Range("AE7:AK7")

Dim rngError As Range
Set rngError = rng.SpecialCells(xlCellTypeFormulas, xlErrors)

If Not rngError Is Nothing Then
    For Each cell In rngError
        'Clear the cell
    Next
End If

End Sub

这是我到目前为止所拥有的。我不知道如何清除细胞。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:2)

不需要循环:

<击>

<击>
Sub Check_Ref()

   Dim rng As Range
   Dim rngError As Range

   Set rng = Sheets("All Projects").Range("AE7:AK7")
   Set rngError = rng.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)

   If Not rngError Is Nothing Then
       rngError.Clear
   End If

End Sub

<击> 修改#1

如果在工作表上找不到错误,则禁用错误:

Sub Check_Ref()

   Dim rng As Range
   Dim rngError As Range

   Set rng = Sheets("All Projects").Range("AE7:AK7")
   On Error Resume Next
       Set rngError = rng.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
   On Error GoTo 0
   If Not rngError Is Nothing Then
       rngError.ClearContents
   End If

End Sub

答案 1 :(得分:0)

如果您要隔离#REF错误,则建议您更准确地了解如何处理从SpecialCells重新启动的xlErrors

Sub Check_Err()

Dim rng As Range
Dim rng2 As Range
Dim rngError As Range

Set rng = Sheets("All Projects").Range("AE7:AK7")
On Error Resume Next
Set rngError = rng.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not rngError Is Nothing Then
    For Each rng2 In rngError
       If rng2.Value2 = CVErr(xlErrRef) Then rng2.ClearContents
    Next
End If
End Sub