Условное форматирование 2 условия соблюдены - PullRequest
0 голосов
/ 24 октября 2019

Попытка заставить условное форматирование выполняться через код VBA (поскольку значения меняются каждый день, также есть код для очистки, который удаляет выполненное мной условное форматирование, не VBA).

Хотите выделить значения в столбцеP с числовыми значениями> 0 и O4> 0.

Sheets("RAW DATA FILE").Cells("A1").Select
Sheets("RAW DATA FILE").Columns("A:A").EntireColumn.AutoFit
Sheets("RAW DATA FILE").Range("P4").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=AND(ISNUMBER($P4), $P4>0, $O4>0)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 49407
    .TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

Первая строка вызывает ошибку:

Ошибка времени выполнения '5'

Недопустимовызов процедуры или аргумент

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Вы можете использовать цикл через все ячейки в диапазоне, если вам нужно обновить больше ячеек. Вы определяете диапазон в строке With .Range ("P1: P10")

Sub Conditional_formatting_2_conditions_met()

    Dim lRow    As Long
    Dim cel     As Range

    With Sheets("RAW DATA FILE")
        .Columns("A:A").EntireColumn.AutoFit
        With .Range("P1:P10")
            For Each cel In .Cells
                With cel
                    lRow = lRow + 1
                    With .FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ISNUMBER($P" & CStr(lRow) & "), $P" & CStr(lRow) & ">0, $O" & CStr(lRow) & ">0)")
                        .SetFirstPriority
                        .StopIfTrue = False
                        With .Interior
                            .PatternColorIndex = xlAutomatic
                            .Color = 49407
                            .TintAndShade = 0
                        End With
                    End With
                End With
            Next cel
        End With
    End With
End Sub
0 голосов
/ 24 октября 2019

Может показаться, что есть проблема с вашей первой строкой, должно быть Range вместо Cells:

Sub Conditional_formatting_2_conditions_met()
    Sheets("RAW DATA FILE").Activate
    Sheets("RAW DATA FILE").Range("A1").Select
    Sheets("RAW DATA FILE").Columns("A:A").EntireColumn.AutoFit
    Sheets("RAW DATA FILE").Range("$P:$P").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=AND(ISNUMBER($P1), $P1>0, $O1>0)"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 49407
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub


...