VBA将条件格式应用于单元格

我试图添加条件格式到检查单元格X1的范围,如果它不匹配适用的条件。

如果我把它应用到一个单元格,它工作的很好。 但是我需要它适用于一个范围内的每个单元格。

码:

Function FindComment(rng As Range, strSearch As String) As Boolean On Error GoTo err_h: strSearch = LCase(strSearch) If Len(strSearch) = 0 Then FindComment = False Exit Function End If If InStr(1, rng.Comment.Text, strSearch, vbTextCompare) > 0 Or InStr(1, rng.Text, strSearch, vbTextCompare) > 0 Then FindComment = False Exit Function End If FindComment = True Exit Function err_h: FindComment = True End Function 

并应用条件格式:

 Public Sub AddConditionalFormat(rng As Range) rng.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=FINDCOMMENT(" & rng.Address(, , xlA1) & ",$X$1)" rng.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .ColorIndex = 2 End With With rng.FormatConditions(1).Interior .Pattern = xlGray75 .PatternThemeColor = xlThemeColorDark2 .PatternTintAndShade = 0 .ColorIndex = 2 .TintAndShade = 0 .PatternTintAndShade = 0 End With rng.FormatConditions(1).StopIfTrue = False End Sub 

范围范围(“B6:GD9”)被确定为rng。

目前如果结果相匹配,只是将包含匹配的所有单元格空白。

任何人有一个如何轻松解决的想法? 我更喜欢的东西,不会落后于代码应用到每个单元格等

Range.Address属性默认为绝对的行和列引用。 你正在寻找像A1这样的东西,但是你得到$A$1

 rng.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=FINDCOMMENT(" & rng.Cells(1, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False, ReferenceStyle:=xlA1) & ", $X$1)" 'alternate in shorthand rng.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=FINDCOMMENT(" & rng.Cells(1, 1).Address(0, 0, xlA1) & ", $X$1)" 

使用.Cells(1, 1)应该使该公式引用rng左上angular单元格。