ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: Aeolian-Vox

[分享]VBA实现单元格条件格式的属性、方法

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-30 19:16 | 显示全部楼层

[分享]VBA实现单元格条件格式的属性、方法

本帖已被收录到知识树中,索引项:Range对象

'接上贴

                            '表达式1、表达式2的比较
                            If V_Fc_1 > V_Fc_2 Then
                                t_V_Fc_a = V_Fc_2
                                t_V_Fc_b = V_Fc_1
                            Else
                                t_V_Fc_a = V_Fc_1
                                t_V_Fc_b = V_Fc_2
                            End If
                        Else '操作符序号大于2的情况
                            t_V_Fc_a = V_Fc_1
                            If t_Rng_Val < V_Fc_1 Then
                            '单元格值小于条件格式的设置的值,即条件成立的情况
                                ans = True
                                Con = i
                                Exit For
                            End If
                        End If
                        '单元格值、条件格式表达式1、条件格式表达式2的返回值:为文本时,将小写英文字符转换为大写英文字符
                        If Application.WorksheetFunction.IsText(t_Rng_Val) Then t_Rng_Val = """" & UCase(t_Rng_Val) & """"
                        If Application.WorksheetFunction.IsText(t_V_Fc_a) Then t_V_Fc_a = """" & UCase(t_V_Fc_a) & """"
                        If Application.WorksheetFunction.IsText(t_V_Fc_b) Then t_V_Fc_b = """" & UCase(t_V_Fc_b) & """"
                        '返回s_Str字符串中的操作符为:可转换一个对象或者一个值做替换操作
                        s_Strs = s_Operator(Operator_sTr)
                        s_Str = Replace(s_Strs, "For1", t_V_Fc_a)
                        s_Str = Replace(s_Str, "For2", t_V_Fc_b)
                        s_Str = Replace(s_Str, "vCell", t_Rng_Val)
                        '将s_Str 转换为值出现错误时
                        If Application.WorksheetFunction.IsError(Application.Evaluate(s_Str)) Then
                        Else '转换成功。则条件格式成立
                            ans = Application.Evaluate(s_Str)
                        End If

                    Else '条件格式为公式
                        If Application.WorksheetFunction.IsError(Application.Evaluate(.FormatConditions(i).Formula1)) Then
                        Else
                            ans = Application.Evaluate(.FormatConditions(i).Formula1)
                            Con = i
                        End If
                    End If
                End With
            Next
            If Con > 0 Then
                Set s1 = t_Rng.FormatConditions(Con).Font '条件格式中设置的字体
                Set s2 = t_Rng.FormatConditions(Con).Interior '条件格式中设置的单元格内部
                Set s3 = t_Rng.FormatConditions(Con).Borders '条件格式中设置的单元格边框
                With t_Rng.Font '条件格式成立的单元格字体
                    .Bold = s1.Bold '加粗
                    .Italic = s1.Italic '斜体
                    .Underline = s1.Underline '下划线
                    .Strikethrough = s1.Strikethrough '删除线
                    .ColorIndex = s1.ColorIndex '字体颜色索引号
                End With
                With t_Rng
                    .Interior.ColorIndex = s2.ColorIndex  '单元格内部颜色索引号
                    .Interior.Pattern = s2.Pattern '单元格内部图案
                    .Interior.PatternColorIndex = s2.PatternColorIndex '单元格内部图案颜色索引号
                    .Borders.LineStyle = s3.LineStyle '单元格边框线类型
                    .Borders.ColorIndex = s3.ColorIndex '单元格边框线颜色索引号
                    .Borders.Weight = s3.Weight '边框线宽度(粗细)
                    .FormatConditions.Delete '删除条件格式
                End With
            End If
        End If
    Next
    Application.ScreenUpdating = False
End Sub   
(备注:本过程参考修订了:http://www.vbeach.net/bbs/archiver/?tid-6471.html处的代码)
效果如下图演示:

  本帖的程序测试在Excel2003下通过。引用的帮助内容出自Excel2003VBA中。希望本帖起到资料或者工具的作用,既方便自己的快速查阅,也方便了有此需求的朋友。

 [em05][em10][em10][em10]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-30 19:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

发这个贴真是费老鼻子劲了,不是断线就是发生发帖错误,再不然就是所帖子字数超过.......。痛苦的1个小时。

O2VesiLP.rar (20.15 KB, 下载次数: 1665)


[em10][em10][em10][em10][em10][em10][em24][em24]

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-12-1 01:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-3-5 10:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
留个记号,好好学习了

TA的精华主题

TA的得分主题

发表于 2007-11-21 23:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
慢慢看,我要仔细地看。辛苦了[em17]

TA的精华主题

TA的得分主题

发表于 2007-11-21 23:48 | 显示全部楼层

對新入門者相當有用
謝謝樓主提供分享 !!!

 

[em23][em23][em23]

 

[em24][em24][em24]

 

[em27][em27][em27]

TA的精华主题

TA的得分主题

发表于 2007-11-22 13:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-4-1 21:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-4 22:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-7 16:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
佩服佩服!!!研究得非常透彻!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 08:49 , Processed in 0.054102 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表