专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
Excel之家ExcelHome  ·  能跳转的工作表目录 ·  2 天前  
Excel之家ExcelHome  ·  Excel文档打印,这几个设置都有用 ·  2 天前  
完美Excel  ·  在Word中控制PowerPint ·  2 天前  
Excel之家ExcelHome  ·  公式详解:字符提取的模式化用法 ·  4 天前  
完美Excel  ·  强迫Excel函数溢出 ·  1 周前  
51好读  ›  专栏  ›  完美Excel

使用VBA覆盖条件格式设置的单元格背景色

完美Excel  · 公众号  · Excel  · 2024-10-02 07:30

正文

学习Excel技术,关注微信公众号:
excelperfect

标签:VBA条件格式

Excel中,如果使用条件格式设置了单元格的背景色,那么再使用单元格属性为其指定不同的颜色,则其仍会保留条件格式设置的颜色,即如果已经使用条件格式设置单元格背景色,则再手工为该单元格设置的背景色没有效果。

然而,有时候可能希望手工为已由条件格式设置了背景色的单元格赋予不同的颜色,那该如何实现?使用VBA

VBE中,插入一个标准模块,在其中输入下面的代码:

Function CellFilled(rng As Range) As Boolean CellFilled = Range(rng.Address).Interior.Pattern <> xlNoneEnd Function

这个函数检查单元格是否设置了背景色。然后,选择想要手工覆盖要应用于条件格式的单元格区域,使用公式确定要设置格式的单元格来添加新规则,输入公式:

=cellfilled(A1)

注意,单元格A1必须是所选区域的第一个单元格。无需为此规则设置任何格式,确保这是应用的第一条规则,并勾选其右侧复选框如果为真则停止

接着,使用工作表的SelectionChange事件。在VBE中选择设置条件格式的相应工作表代码模块,添加以下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.CalculateFullEnd Sub

如果在手工设置颜色后随机选择另一个单元格,这将使刚设置的颜色可见。然而,缺点是每次更改单元格选择时都会进行全部重新计算。如果工作簿包含许多公式,可能会减慢速度。最后稍作调整,例如,如果条件格式适用于单元格区域A1:C10,则只有当选择该区域内的单元格或相邻单元格时,才会进行全部重新计算:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A1:C10")) Is Nothing Then   Application.CalculateFull End IfEnd Sub

如果在修改了单元格的颜色后选择了另一个工作表,那么将不会触发SelectionChange事件。下面的代码会使每次打开相应的工作表时,总显示设置的颜色:

Private Sub Worksheet_Activate()  Application.CalculateFullEnd Sub

注:本文学习整理自worksheetsvba.com,供参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

推荐文章
Excel之家ExcelHome  ·  能跳转的工作表目录
2 天前
Excel之家ExcelHome  ·  Excel文档打印,这几个设置都有用
2 天前
完美Excel  ·  在Word中控制PowerPint
2 天前
Excel之家ExcelHome  ·  公式详解:字符提取的模式化用法
4 天前
完美Excel  ·  强迫Excel函数溢出
1 周前
美好滁州  ·  幽默一刻!
7 年前