Добрый день! Нужна небольшая помощь: необходимо залить ячейки столбцов B, C, D (например светло-зеленым) в случае, если все ячейки в диапазоне столбцов G-V той же строки заполнились данными. Желательно макросом, т.к. на листе работают другие макросы и форматирование не подходит.
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 той же строки заполнились данными.
МатросНаЗебре, не совсем так... когда ячейку очищаю, заливка остается. Как исправить, чтобы если хотя бы одна ячейка становится пустой, заливка исчезала (всё становилось на свои места).
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
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...