Код VBA для изменения цвета строки при изменении значения в столбце A - PullRequest
2 голосов
/ 23 ноября 2010

Моя электронная таблица настроена следующим образом:

У меня есть список номеров должностей в столбце A и соответствующий список названий должностей в столбце B. Мне нужны все строки определенного номера задания.быть цветным.например, строки 2-4 имеют «3705» в столбце A, поэтому эти строки будут окрашены в красный цвет.Строки 5 и 6 имеют 4169 в столбце A и будут окрашены в зеленый цвет.Строки 7-10 имеют 5518 в столбце A и будут окрашены в красный цвет (чередуются между красным и зеленым).

Может кто-нибудь дать мне код VBA, который будет делать то, что я описал выше, автоматически / с помощью макроса?

Спасибо !!

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010
Sub colorize()

Dim r As Long, val As Long, c As Long

    r = 1
    val = ActiveSheet.Cells(r, 1).Value
    c = 4 '4 is green, 3 is red '

    For r = 1 To ActiveSheet.Rows.Count
        If IsEmpty(ActiveSheet.Cells(r, 1).Value) Then
            Exit For
        End If

        If ActiveSheet.Cells(r, 1).Value <> val Then
            If c = 3 Then
                c = 4
            Else
                c = 3
            End If
        End If

        ActiveSheet.Rows(r).Select
        With Selection.Interior
            .ColorIndex = c
            .Pattern = xlSolid
        End With

        val = ActiveSheet.Cells(r, 1).Value
    Next

End Sub

Добавьте следующее в модуль соответствующего рабочего листа, если вы хотите, чтобы макрос запускался каждый раз, когда ячейка в столбце A изменяет значение:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("A:A")) Is Nothing Then
        Exit Sub
    End If

    colorize

End Sub
2 голосов
/ 02 октября 2011

Это можно сделать, используя только формулы Excel и условное форматирование, если вы можете добавить столбец.Возможно, вам не удастся чередовать красный / зеленый, но только цвет без цвета.

Альтернативный цвет строки Excel в зависимости от содержимого

...