动态选择行的一部分以着色单元格

时间:2015-08-24 21:55:33

标签: excel vba

我想根据单元格的值更改单元格的背景颜色,而不是整行。我有一些代码可以满足我的需求,但我确信有一种更有效的方法,并希望在提高代码效率方面提供一些帮助。下面列出了执行任务的代码片段。

$  awk '{print $0, ($3==1?$2:0)}' file
4 3 1 3
4 3 2 0

1 个答案:

答案 0 :(得分:1)

条件格式化是最好的,但如果您希望使用普通格式,这是您的代码的简化版本:

Sub chg_bkgrnd_Color()
    Dim i&
    For i = 2 To 23
        If Cells(i, 11) = "Closed" Then
            With Range(Cells(i, 1), Cells(i, 4)).Interior
                .ThemeColor = xlThemeColorDark1
                .TintAndShade = -0.249977111117893
            End With
        End If
    Next
End Sub

按照@ Jeeped的建议,这是一个用于自动化的版本。在工作表的代码模块中,放置:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    RangeAutoBackFill "Closed", 11, 2, 23, 1, 4, xlThemeColorDark1, -0.249977111117893

End Sub

然后在标准代码模块中放置:

Public Sub RangeAutoBackFill(Key$, KeyCol&, KeyRowLow&, KeyRowHigh&, FillColLow&, FillColHigh&, FillTheme&, FillTint#)
    Dim i&
    For i = KeyRowLow To KeyRowHigh
        If Cells(i, KeyCol) = Key Then
            With Range(Cells(i, FillColLow), Cells(i, FillColHigh)).Interior
                .ThemeColor = FillTheme
                .TintAndShade = FillTint
            End With
        End If
    Next
End Sub