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单元格。