我想根据单元格的值更改单元格的背景颜色,而不是整行。我有一些代码可以满足我的需求,但我确信有一种更有效的方法,并希望在提高代码效率方面提供一些帮助。下面列出了执行任务的代码片段。
$ awk '{print $0, ($3==1?$2:0)}' file
4 3 1 3
4 3 2 0
答案 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