Страницы: 1
RSS
Заливка ячеек сроки цветом после полного заполнения диапазона той же строки данными
 
Добрый день!
Нужна небольшая помощь: необходимо залить ячейки столбцов B, C, D (например светло-зеленым) в случае, если все ячейки в диапазоне столбцов G-V той же строки заполнились данными.
Желательно макросом, т.к. на листе работают другие макросы и форматирование не подходит.
Изменено: evg_glaz - 06.09.2022 13:53:48
 
Код
Sub ЗакраситьАктивныйЛист()
    Dim rr As Range
    For Each rr In ActiveSheet.UsedRange.Rows
        CheckRow rr
    Next
End Sub

Sub CheckRow(rRows As Range)
    With rRows
        Dim arr As Variant
        arr = .Cells(1, [G1].Column).Resize(1, [V1].Column - [G1].Column + 1)
        Dim xx As Long
        Dim flagEmpty As Boolean
        For xx = 1 To UBound(arr, 2)
            If IsEmpty(arr(1, xx)) Then
                flagEmpty = True
                Exit For
            End If
        Next
        If Not flagEmpty Then
            Union(.Range("B1"), .Range("C1"), .Range("D1")).Interior.Color = RGB(200, 255, 200)
        End If
    End With
End Sub
 
МатросНаЗебре, Спасибо! Долго ждал ответа)
А как автоматизировать это?
Цитата
необходимо залить ячейки столбцов B, C, D ....
Согласен - криво написал сам! Должно быть - "чтобы ячейки сами заливались..." в случае, если все ячейки в диапазоне столбцов G-V той же строки заполнились данными.
Изменено: evg_glaz - 27.09.2022 16:20:48
 
Цитата
А как автоматизировать это?
МатросНаЗебре, спасибо большое за помощь, разобрался, всё работает!!!
 
МатросНаЗебре, не совсем так... когда ячейку очищаю, заливка остается.
Как исправить, чтобы если хотя бы одна ячейка становится пустой, заливка исчезала (всё становилось на свои места).
 
Код
If Not flagEmpty Then
    Union(.Range("B1"), .Range("C1"), .Range("D1")).Interior.Color = RGB(200, 255, 200)
else
    .Range("B1").Resize(,3).Interior.ColorIndex = xlNone
End If
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, очередное спасибо!!!
 
Код
  [b1:d1].Interior.Color = IIf(flagEmpty, xlNone, RGB(200, 255, 200))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, спасибо за помощь!!!
Страницы: 1
Наверх