Условное форматирование для выделения указанных c ячеек, но не пустых и текстовых ячеек VBA - PullRequest
1 голос
/ 05 февраля 2020

У меня есть макрос, который выделяет ячейки вне диапазона. Единственная проблема с ним заключается в том, что он также выделяет все пустые ячейки и ячейки с текстом. Есть ли способ игнорировать их?

enter image description here

Вот мой код

Sub Highlight()
'
' Highlight good values

Application.ScreenUpdating = False

    Dim ws As Worksheet


    For Each ws In ActiveWorkbook.Worksheets

    ws.Activate

        With ActiveSheet.Rows("18:79")
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, _
                Formula1:="=$C18", Formula2:="=$D18"
            .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
            With .FormatConditions(1).Font
                .Color = -16752384
                .TintAndShade = 0
            End With
            With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 13561798
                .TintAndShade = 0
            End With
            .FormatConditions(1).StopIfTrue = False
        End With

    Next ws

Application.ScreenUpdating = True

End Sub

1 Ответ

1 голос
/ 05 февраля 2020

В настоящее время у вас есть только ограничение строки на диапазон, к которому применяется условное форматирование. Если вы хотите ограничить диапазон воздействия, вам просто нужно изменить With, чтобы иметь ограничение Row и Column .


Обновить это:

With ActiveSheet.Rows("18:79")

На это:

With ActiveSheet.Range("A18:O79")

Редактировать

Если на каждом листе есть ЖЕ диапазон строк (18:79), но столбцы имеют диапазон VARYING , вам просто нужно создать переменную последнего столбца для создания динамического c диапазона

Sub Highlight()

Dim ws As Worksheet, LC As Long

For Each ws In ActiveWorkbook.Worksheets
    LC = ws.Cells(18, ws.Columns.Count).End(xlToLeft).Column

    With ws.Range(ws.Cells(18, 1), ws.Cells(79, LC))
       'Formatting goes here
    End With

Next ws

End Sub
...