Как создать формулу на основе условно отформатированных ячеек с использованием VBA - PullRequest
0 голосов
/ 12 февраля 2019

У меня следующая ситуация: я отформатировал с помощью FormatConditions диапазон, чтобы показать стиль «Хороший», если значения в диапазоне находятся между -2 и 2, и стиль «Плохой», если нет, используя этот код:

With Range("D46:AC53")    
        .FormatConditions.Add Type:=xlExpression, Formula1:= _
          "=IF(AND(D46<2,D46>-2),TRUE,FALSE)"
        With .FormatConditions(.FormatConditions.Count)
            .SetFirstPriority
            With .Interior
                .PatternColorIndex = xlAutomatic
                .Color = RGB(198, 239, 206)
                .TintAndShade = 0
            End With
        .Font.Color = RGB(0, 98, 0)
        End With
       .FormatConditions.Add Type:=xlExpression, Formula1:= _
          "=IF(AND(D46<2,D46>-2),FALSE,TRUE)"
        With .FormatConditions(.FormatConditions.Count)
            .SetFirstPriority
            With .Interior
                .PatternColorIndex = xlAutomatic
                .Color = RGB(255, 199, 206)
                .TintAndShade = 0
            End With
        .Font.Color = RGB(156, 0, 6)
        End With
    End With

Это прекрасно работает.

Теперь я хотел бы создать макрос-кнопку, которая определит, что если весь диапазон "D46: AC53" равен "Хорошо", показать значение "ИСТИНА""в конкретной ячейке.Я использовал этот код:

If Range("D46:AC53").Interior.Color = RGB(198, 239, 206) Then Range("c3").Value = "TRUE" Else Range("c3").Value = "FALSE"

Даже диапазон D46: AC53 выглядит как «Хорошо», кнопка возвращает мне «ЛОЖЬ».

Можете ли вы мне помочь?Что я делаю не так?

Спасибо, Александра

Я проверил цвет заливки в диапазоне, отформатированном с использованием первого кода, используя правый щелчок и форматирование ячеек, и он показывает, что я не заполняюсь.Я вручную отформатировал Range D46: AC53, используя стиль «Хороший» из стилей в Excel, и это заставляет макрос кнопки работать.

1 Ответ

0 голосов
/ 12 февраля 2019

Я думаю, что вам это нужно, в соответствии с моим комментарием выше.

If WorksheetFunction.CountIfs(Range("D46:AC53"), "<2", Range("D46:AC53"), ">-2") = Range("D46:AC53").Count Then
    Range("c3").Value = "TRUE"
Else
    Range("c3").Value = "FALSE"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...