我想更改下面的宏,使其根据单元格值更改行的一部分而不是单元格的颜色。
如果单元格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
答案 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。