Может быть, я глуп и пропускаю хитрость, но я ищу создать пример файла Excel для условного форматирования.

Я доволен созданием правил условного формата, однако у меня возникла проблема с динамической настройкой раздела «Формат».

В приведенном ниже примере я ищу выделенное правило для использования форматирования ячейки I4, если квадрат содержит «x» - таким образом, если я изменю форматирование I4, скажем, на красный фон, это правило автоматически обновится соответствующим образом ,

Я посмотрел и не могу найти что-то похожее на «художника формата». Это вообще возможно?

1 ответ1

2

Проверьте, подходит ли вам это решение на основе VBA. Он по-прежнему внутренне создает те же правила условного форматирования, что и требуется, но с помощью кода VBA теперь решает индекс цвета на основе цвета ячеек в I4 и I5.

Этот пример соответствует тому же диапазону, что и в вашем вопросе. Диапазон B4:D6 для применения условного форматирования и использования эталонного цвета из I4 и I5.

На вашем листе произнесите «Лист1», нажмите ALT + F11 . Редактор VBA откроется. Двойной щелчок на Sheet1 в левой панели и в правой части редактора кода выберите объект листа (первый выпадающий список), а затем изменить событие (второй выпадающий список).

В этом месте для вас будет доступна следующая подпрограмма.

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub 

Внутри этой подпрограммы поместите приведенный ниже код VBA.

'On WorkSheet Change Event Check for Change in C5 and that too if X or O is entered in it.
If Target.Address = "$C$5" Then
    If UCase(Target) = UCase(Range("G4").Value) Or UCase(Target) = UCase(Range("G5").Value) Then
        'First clear the Conditional formatting at B4:D6

        Range("B4:D6").Select
        Selection.FormatConditions.Delete
        Range("C5").Select

        'Set the conditional formatting at B4:D6
        Range("B4:D6").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$5=$G$4"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior

            .Color = Range("I4").Interior.Color

        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("B4:D6").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$5=$G$5"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior

            .Color = Range("I5").Interior.Color

        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("C5").Select

    End If

End If

Сохраните и выйдите из редактора VBA. Теперь каждый раз, когда вы изменяете значение в ячейке C5, код будет проверять, является ли он C5 и введены ли в нем X или O, и воссоздает правила условного форматирования, применимые к B4:D6 на основе цвета из I4 и I5.

Однако вам нужно будет повторно ввести значение в C5, чтобы этот код работал после изменения цвета фона в I4 и / или I5. VBA не предлагает никаких событий изменения цвета фона для записи. Тем не менее, возможно, можно будет перехватывать такие события, используя код VBA.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .