VBA Excel - Как сделать заливку по ячейкам в расширяющемся диапазоне по определенным условиям?

Здравствуйте, коллеги!

Подскажите пожалуйста: у меня есть макрос, который расширяет количество строк каждый раз на неопределенное значение, то есть диапазон меняется всегда по строкам. И мне нужно закрашивать пустые ячейки, либо ячейки, в которых не содержится текстовой & буквенной информации (символы).

Как это можно реализовать?

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

Заранее благодарю!!!

P.S. Пытался здесь посчитать через сложение последних строк в каждом листе

            'kolvo_strok = 0
            'With shd
            'lRw1 = shd.Cells(rsh.Rows.Count, 1).End(xlUp).Row
            'kolvo_strok = kolvo_strok + lRw1
            'End With
            'MsgBox kolvo_strok

Ответы (1 шт):

Автор решения: Akina

введите сюда описание изображения

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Worksheets("Лист1")
    sh.Cells.FormatConditions.Delete
    With sh.UsedRange
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="="""""
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        With .FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        .FormatConditions(1).StopIfTrue = False
    End With
End Sub

Добавление ячеек в диапазон приводит к пересозданию правила и окрашиванию пустых ячеек во всём использованном диапазоне. Если надо не во всём - поправьте, и вместо With sh.UsedRange используйте задание в требуемом Range.

→ Ссылка