Как использовать событие Worksheet_Change для условного форматирования? - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть рабочий лист со списком задач, по одному в каждой строке. Столбец A - это имя задачи, столбец B - дата, когда она должна быть выполнена, а столбец C - лицо, которое должно это сделать. Столбец D используется, чтобы указать, когда это было сделано. Если этот столбец содержит что-либо, то цвет фона для всей строки должен быть серым, в противном случае он должен быть белым.

Я думаю, что событие worksheet_change - лучший способ справиться с этим. Я полагаю, что я мог бы использовать условное форматирование, но это кажется уязвимым для взлома, если клетки перетаскиваются - мне нужно, чтобы это было как можно более «пуленепробиваемым»!

В псевдокоде я пытаюсь добиться следующего:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target includes a cell in column "D"
        If "D" is not empty
            Set entire row background to grey
        Else
            Set entire row background to white
        End If
    End If
End Sub

Кто-нибудь может подсказать, как лучше всего это реализовать? Я даже на правильных линиях, или есть лучший способ?

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Я думаю, что вы можете использовать следующее условие для каждой ячейки:

=INDIRECT("$D" & ROW())>0

Я сделал несколько копий / вставок и перетащил ячейки вокруг, и условный формат не сломался.

0 голосов
/ 25 декабря 2009

с условным форматированием:

Перейти к Tools->Options->General и активировать R1C1 reference style

Состояние: =ISEMPTY(RC4)

С VBA:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim found As Range
Dim cell As Range
Dim colStart As Integer
Dim colEnd As Integer

    Set found = Intersect(Target, Me.Columns(4))
    colStart = 1
    colEnd = 4

    If Not found Is Nothing Then
        For Each cell In found
            With Me.Range(Me.Cells(cell.Row, colStart), Me.Cells(cell.Row, colEnd)).Interior
                If IsEmpty(cell) Then
                    .ColorIndex = 15
                Else
                    .ColorIndex = xlNone
                End If
            End With
        Next cell
    End If

    Set found = Nothing
End Sub

Я рекомендую использовать условное форматирование

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