Excel宏 - 根据值更改行

时间:2015-03-16 19:09:08

标签: excel vba excel-vba excel-2010

我想更改下面的宏,使其根据单元格值更改行的一部分而不是单元格的颜色。

如果单元格E2中的值是“证明”,则单元格A2-E2变为红色。

Sub ChangeColor()
lRow = Range("E" & Rows.Count).End(xlUp).Row
Set MR = Range("E2:E" & lRow)
For Each cell In MR
If cell.Value = "Proof" Then cell.Interior.ColorIndex = 3
    Next
End Sub

3 个答案:

答案 0 :(得分:2)

这是一个相对简单的变化。将cell.Interior.ColorIndex = 3更改为特定范围,如以下过程所示。

Sub ChangeColor()
lRow = Range("E" & Rows.Count).End(xlUp).Row
Set MR = Range("E2:E" & lRow)
For Each cell In MR
If cell.Value = "Proof" Then range("a" & cell.row & ":e" & cell.row).Interior.ColorIndex = 3
    Next
End Sub

答案 1 :(得分:0)

如果要处理很多行,您可能希望放弃循环过程并使用过滤器。

对于A:E突出显示:

Sub highlight_Proof()
    With ActiveSheet
        With .Cells(1, 1).CurrentRegion
            .Cells.Interior.Pattern = xlNone
            If .AutoFilter Then .AutoFilter
            .AutoFilter Field:=5, Criteria1:="=proof"
            With .Offset(1, 0).Resize(.Rows.Count - 1, 5)
                If CBool(Application.Subtotal(103, .Cells)) Then _
                    .SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 3
            End With
        .AutoFilter
        End With
    End With
End Sub

对于完整行突出显示:

Sub highlight_Proof2()
    With ActiveSheet
        With .Cells(1, 1).CurrentRegion
            If .AutoFilter Then .AutoFilter
            .AutoFilter Field:=5, Criteria1:="=proof"
            With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
                If CBool(Application.Subtotal(103, .Cells)) Then _
                    .SpecialCells(xlCellTypeVisible).EntireRow.Interior.ColorIndex = 3
            End With
        .AutoFilter
        End With
    End With
End Sub

我没有通配“证明的搜索,但这是一个小修改。您的原始代码似乎正在寻找整个单元格值。

答案 2 :(得分:0)

使用条件格式,选择ColumnsA:E,HOME>条件格式,新规则...,使用公式确定要格式化的单元格格式化此公式为真的值:

=$E1="proof"

格式化... ,选择红色,OK,OK。