Страницы: 1
RSS
помогите, не могу обратно убрать заливку с залитых красным цветом ячеек !!!
 
у меня макрос проверяет, есть ли ячейки с формулами, содержащими ошибки и если ячейка с ошибкой, то она заливается в красный цвет :  
 
   Selection.SpecialCells(xlCellTypeFormulas, 16).Interior.ColorIndex = 3  
 
но потом, когда я исправил ошибки, мне нужно убрать заливку с этих ячеек, т.е. сделать их без заливки. И у меня на листе есть также ячейки с постоянной заливкой другими цветами, кроме красного с кодом ColorIndex = 3. Мне нужно выделить именно с этим кодом заливки ячейки без ошибок и убрать с них заливку.  
Как это сделать не пойму, подскажите пожалуйста..........
 
запускайте последовательно  
With Selection.SpecialCells(xlCellTypeFormulas, 16).Interior  
.color = xlnone  
.ColorIndex = 3  
end with
 
я прописал так :  
 
   With Selection.SpecialCells(xlCellTypeFormulas, 16).Interior  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).Color = xlNone  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).ColorIndex = 3  
End With  
 
но ничего не работает, полностью пожалуйста весь код как он должен выглядеть напишите, и еще учтите, что у меня сначала идет проверка условия от значения в ячейке, т.е. у меня вид такой :  
 
     If Range("K228").Value = 2 Then  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).Interior  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).Color = xlNone  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).ColorIndex = 3  
End With  
     End If  
 
а теперь можете подправить меня.
 
Вот. Скопируйте, как есть. Лишних With не добавляйте  
 
Sub ert()  
'здесь какой-то Ваш код  
On Error Resume Next 'на случай, если не окажется формул с ошибками  
If Range("K228").Value = 2 Then  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).Interior  
       .Color = xlNone  
       .ColorIndex = 3  
   End With  
End If  
On Error GoTo 0  
'здесь продолжается Ваш код  
End Sub
 
всё равно не работает, как были красные ячейки без ошибок так они и остались.  
Я привожу пример как я прописал код :  
 
     If Range("K228").Value = 2 Then  
   With Selection.SpecialCells(xlCellTypeFormulas, 16).Interior  
   .Color = xlNone  
   .ColorIndex = 3  
   End With  
     End If  
 
и вот этот код  If Range("K228").Value = 2 Then как раз и проверяет наличие ячеек с ошибками на листе, т.е. не нужно перед этим проверять лист. Если = 2, то значит ячейки с ошибками отстуствуют, мне только нужно выделить уже залитые красным цветом ячейки и снять с них заливку.  
что не так-то я делаю или вы???
 
так?  
Sub errcheck()  
Dim err As Range  
If Range("K228").Value = 2 Then  
For Each err In Selection  
If err.HasFormula And Application.IsError(err) Then 'if cell contain error value it'll not apply red colour  
err.Interior.ColorIndex = 3  
Else  
err.Interior.ColorIndex = 0  
End If  
Next  
End If  
End Sub
MyExcelWorld One World One Dream!
Microsoft MVP Excel from 2012
Aydin Aliyev
 
все равно не очень понятно. если нужны ячейки с формулами без ошибок, то SpecialCells без 2-го параметра. Что-то вроде этого  
 
Sub ert()  
If Range("K228").Value = 2 Then    ' ошибок точно нет  
   Selection.SpecialCells(xlCellTypeFormulas).Interior.Color = xlNone  
Else    'ошибки вроде как есть  
   Selection.SpecialCells(xlCellTypeFormulas, 16).Interior.ColorIndex = 3  
End If  
End Sub
 
всё спасибо огромное, заработало...  
 
нужно было только 1 строчку вставить  
 
Selection.SpecialCells(xlCellTypeFormulas).Interior.Color = xlNone
 
только вот работает на всех ячейках, а мне нужно только для залитых красным цветом......  
 
как это сделать ?????
 
пишу чуть более подробный код :  
 
     If Range("K228").Value = 1 Then  
   MsgBox "ОШИБКА - в предложении есть значение с ошибкой #ЗНАЧ и пр. (ИСПРАВЬТЕ!!!)", 17, "ВНИМАНИЕ"  
   Selection.SpecialCells(xlCellTypeFormulas, 16).Interior.ColorIndex = 3  
     End If  
       
     If Range("K228").Value = 2 Then  
   Selection.SpecialCells(xlCellTypeFormulas).Interior.Color = xlNone  
     End If  
 
т.е. сначала макрос проверяет и заливает ячейки с ошибкой, а вот затем мне и нужно уже залитые, но без ошибок снять с них заливку. А в ячейках с формулами, но залитых другими цветами, у меня не может быть ошибок и они мне нужны именно с такими цветами как есть.
 
или может мне стоит задать определённый диапазон для проверки ячеек на ошибки, исключив эти залитые ячейки другими цветами ???  
тогда напишите какой код для этого нужен, с учетом того, что диапазон будет для примера от А1 до Е8, т.е. и по строкам и по столбцам и у меня таких диапазонов будет несколько, сделайте для примера 3 диапазона А1;Е8 , J5;L9 , O7;V10
 
вроде понятно теперь :)  
 
Sub HopeLastErt()  
Dim r As Range  
If Range("K228").Value = 2 Then    ' ошибок точно нет  
   For Each r In Selection.SpecialCells(xlCellTypeFormulas)  
       If r.Interior.ColorIndex = 3 Then r.Interior.Color = xlNone  
   Next r  
End If  
End Sub  
 
Useful это уже предлагал
 
да, но у меня много ячеек и этот код долго проверяет все ячейки, а вот нельзя ли применить здесь такой код    
Selection.SpecialCells(xlCellTypeFormulas).Interior.Color = xlNone  
 
ведь он быстрее работает и еще как применить его или ваш этот код для нескольких заданных диапазонов ячеек, как я писал ранее ????  
буду очень благодарен...
 
да хорошо, сейчас сделаю вам файл для наглядного примера, подождите минут 5, хорошо ?!
 
вот смотрите пример
Страницы: 1
Читают тему
Наверх