Условное форматирование Excel VBA удаляет формулу

#vba #excel

#vba #excel

Вопрос:

Есть ли способ удалить условное форматирование в ячейке, только если в ней есть определенная формула?

Прямо сейчас у меня есть

 Cells(r, 4).Select      
With Selection
.FormatConditions.Item(1).Delete
End With
  

Но я хочу, чтобы оно удаляло форматирование только в том случае, если формула

 ="=ISBLANK(A19)=TRUE"
  

Кто-нибудь знает, возможно ли это?

Ответ №1:

 Sub Tester()

    ClearFormulaCF Range("A1:A5"), "=ISBLANK(A19)=TRUE"

End Sub

'Remove any CF rule from cells in rng where the CF formula
'   matches the one provided
Sub ClearFormulaCF(rng As Range, sFormula As String)
    Dim rngCF As Range, c As Range, fc As FormatCondition

    On Error Resume Next
    'any cells with CF?
    Set rngCF = rng.SpecialCells(xlCellTypeAllFormatConditions)
    On Error GoTo 0
    If rngCF Is Nothing Then Exit Sub 'no CF found

    For Each c In rngCF.Cells
        For Each fc In c.FormatConditions
            If fc.Formula1 = sFormula Then
                fc.Delete
                Exit For
            End If
        Next fc
    Next c
End Sub
  

Комментарии:

1. Привет, спасибо, Тим, извини, что не ответил ранее, я был занят другими делами. Могу я задать вопрос? Каков порядок операций здесь? Если я попадаю на ячейку, вызываю ли я Sub Tester, а затем Sub ClearFormulaCF? Или Tester вызывался ранее?

2. «Tester» — это просто замена вашего фактического кода, чтобы продемонстрировать, как вы будете использовать ClearFormulaCF