Циклы и смещения для условного форматирования - PullRequest
2 голосов
/ 27 января 2020

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

Было бы выделено всю строку (я определяю всю строку от i5 до BH5 все, прежде чем это просто скрытые вещи) красным, если число в определенной ячейке больше, чем определенное количество. Он начинается с проверки $ M5 (и проверяет все строки ниже, если оно превышает определенную сумму, поэтому M6, M7, M8 и т. Д.), Затем я хочу переместить четыре столбца вправо и проверить $ Q5.

Если какая-либо из этих ячеек превысит определенное количество (назовем это 10), тогда она выделит весь ряд красным цветом.

Я подумал, что я буду использовать циклическое и смещение, так как я надеваю не нужно вводить $ M5> 10 $ Q5> 10 et c.

Sub QChelp()
    Dim colhl As Long
    Dim HLA As String
    HLA = "$M5"

    For colhl = 13 To 29 Step 4
        With Range("I5:BH300")
            .FormatConditions.Add Type:=xlExpression, Formula1:= _
              "=OR(" & HLA & ">10)"
            With .FormatConditions(.FormatConditions.Count)
                .SetFirstPriority
                With .Interior
                    .PatternColorIndex = xlAutomatic
                    .ColorIndex = 3
                    .TintAndShade = 0
                End With
            End With
        End With
    Next colhl

End Sub

1 Ответ

1 голос
/ 27 января 2020

Как прокомментировано, вы используете стандартную c ссылку ... обратите внимание, что HLA никогда не изменится после ее установки.

Вместо этого вы можете использовать CELLS() ссылку:

... Formula1:="OR(" & cells(5, colhl).Address(RowAbsolute:=False) & ">10)"

(также обратите внимание, что вам не нужно начинать = в формуле CF в VBA)

Редактировать: Добавлено .Address(...) за комментарии выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...