2015-08-24 5 views
-1

Привет, у меня есть этот код, который меняет ячейки с опорными ошибками на белые шрифты. Однако я мог сделать это только для одного листа. ассортимент. Как изменить для каждого цикла цикл для всех рабочих листов в книге? Я использовал этот код ниже, но он не работает!Скрытие ссылок Ошибки с использованием цвета шрифта в VBA

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 
+0

*, похоже, не работает *? – pnuts

+1

работает, но не устраняет эталонные ошибки! @pnuts – Niva

+0

Изменяет ли «Cell.Font.Color»? Поскольку ваши состояния кода меняют «Cell.Font.Color» не '.ClearContents', поэтому он не удаляет опорные ошибки. – DragonSamu

ответ

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 будет оставлено в покое.

Я оставил возможность на самом деле что-то сделать с ошибками как прокомментированную строку.

+0

У меня есть код для удаления всех ошибок ref в следующем разделе моей программы :) Я просто спрятал его, чтобы он не выглядел «непривлекательным», когда пользователи хотят получить доступ к файлу excel. Таким образом, я сначала спрятаю его, затем очищаю содержимое всех ячеек с базовыми ошибками ref @Jeeped – Niva

+1

@Niva использует 'Application.ScreenUpdating = False'' Application.DisplayAlerts = False' в начале вашего кода и устанавливает его на 'True' на конец вашего кода. Это останавливает любое мерцание и обновление на вашем экране, поэтому не является «непривлекательным» для пользователя. – DragonSamu