如何用VBA实现包含指定文本的Excel条件格式?
解决VBA条件格式实现文本包含匹配的问题
要实现包含指定文本的条件格式,你不能用xlCellValue或xlTextString类型——这俩的运算符里确实没有"包含"选项。正确的做法是用表达式规则(xlExpression),结合Excel的SEARCH或FIND函数来判断单元格是否包含目标文本。
修改后的完整代码
Sub CondFormat_01String(strRange As String, strString1 As String, intColorIndex1 As Integer, blnStopIfTrue As Boolean) Dim Rg As Range Dim cond1 As FormatCondition Set Rg = Range(strRange) ' 用表达式规则实现包含匹配,公式基于应用范围的第一个单元格(相对引用会自动适配整个区域) Set cond1 = Rg.FormatConditions.Add(Type:=xlExpression, Formula1:="=ISNUMBER(SEARCH(""" & strString1 & """,A1))") ' 设置格式 With cond1 .Interior.ColorIndex = intColorIndex1 .Font.Color = vbBlack .StopIfTrue = blnStopIfTrue End With End Sub
关键修改点说明
- 把
FormatConditions.Add的类型从xlCellValue改成xlExpression,用公式定义匹配规则 - 公式里的
SEARCH("目标文本",A1):SEARCH不区分大小写,要区分大小写就换成FIND;ISNUMBER用来判断搜索结果是否有效(找到文本返回数字,没找到返回错误) - VBA里用
""""表示单个双引号,用来给公式里的目标文本添加引号 - 公式用
A1是因为条件格式会自动处理相对引用,适配整个strRange区域的每个单元格
内容的提问来源于stack exchange,提问作者Justin L
相关产品推荐
相关产品推荐

