在VBA

时间:2015-08-24 05:58:42

标签: excel vba excel-vba

您好,我有这个代码,将参考错误的单元格更改为白色字体。但是我只能这样做一张纸。范围。如何为工作簿中的所有工作表更改for循环以进行循环?我在下面使用了这段代码,但似乎没有用!

Sub Delete_ref_basedontextcondition()


    Dim R As Range


    'Set rng = Nothing
    On Error Resume Next
    Set R = Application.InputBox("Select cells To be deleted", Type:=8)
    Dim rng As Range



   If TypeName(R) <> "Range" Then
        Exit Sub
    Else
    R.Delete
   End If


For k = 1 To ThisWorkbook.Worksheets.Count 'runs through all worksheets

  Set wks = ThisWorkbook.Worksheets(k)


For Each cell In wks
 If cell.Text = "#REF!" Then
  cell.Font.Color = RGB(255, 255, 255)
 End If
Next
Next
End Sub

1 个答案:

答案 0 :(得分:3)

虽然我不同意您隐藏#REF!错误的方法,而不是处理它们,以致它们 #REF!错误(或删除创建错误的公式,这里有一些标准的“循环工作表”代码,您应该能够根据自己的需要进行调整。

Sub bad_ref()
    Dim w As Long, ref As Range

    On Error Resume Next

    For w = 1 To Worksheets.Count
        With Worksheets(w)
            For Each ref In .Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
                If ref.Text = "#REF!" Then
                    ref.Font.ColorIndex = 2
                    'ref.clear   '<~~this clears formatting, formulas. etc from the rogue cell.
                End If
            Next ref
        End With
    Next w
End Sub

它应该足够快地运行。我没有检查每个工作表上的每个单元格,而是缩小了要用Range.SpecialCells method批评的单元格,只查看产生错误的公式。像#N/A错误之类的东西将不复存在。

我已选择将错误作为注释行实际执行。