在Excel中,如果使用条件格式设置了单元格的背景色,那么再使用单元格属性为其指定不同的颜色,则其仍会保留条件格式设置的颜色,即如果已经使用条件格式设置单元格背景色,则再手工为该单元格设置的背景色没有效果。然而,有时候可能希望手工为已由条件格式设置了背景色的单元格赋予不同的颜色,那该如何实现?使用VBA。在VBE中,插入一个标准模块,在其中输入下面的代码:Function CellFilled(rng As Range) As Boolean
CellFilled = Range(rng.Address).Interior.Pattern <> xlNone
End Function
这个函数检查单元格是否设置了背景色。然后,选择想要手工覆盖要应用于条件格式的单元格区域,使用公式确定要设置格式的单元格来添加新规则,输入公式:注意,单元格A1必须是所选区域的第一个单元格。无需为此规则设置任何格式,确保这是应用的第一条规则,并勾选其右侧复选框“如果为真则停止”。接着,使用工作表的SelectionChange事件。在VBE中选择设置条件格式的相应工作表代码模块,添加以下代码:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CalculateFull
End Sub
如果在手工设置颜色后随机选择另一个单元格,这将使刚设置的颜色可见。然而,缺点是每次更改单元格选择时都会进行全部重新计算。如果工作簿包含许多公式,可能会减慢速度。最后稍作调整,例如,如果条件格式适用于单元格区域A1:C10,则只有当选择该区域内的单元格或相邻单元格时,才会进行全部重新计算:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:C10")) Is Nothing Then
Application.CalculateFull
End If
End Sub
如果在修改了单元格的颜色后选择了另一个工作表,那么将不会触发SelectionChange事件。下面的代码会使每次打开相应的工作表时,总显示设置的颜色:Private Sub Worksheet_Activate()
Application.CalculateFull
End Sub
注:本文学习整理自worksheetsvba.com,供参考。欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。