我有条件格式化的代码,我只改变字符串:
Cells.FormatConditions.Delete
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="CPA", TextOperator:=xlContains)
.Interior.Color = RGB(105, 191, 44)
End With
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="CPN", TextOperator:=xlContains)
.Interior.Color = RGB(105, 191, 44)
End With
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="CSS", TextOperator:=xlContains)
.Interior.Color = RGB(105, 191, 44)
End With
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:="RL", TextOperator:=xlContains)
.Interior.Color = RGB(105, 191, 44)
End With
对于所有这些线路是否有其他选择,所以我可以用更短更有效的方式编写它?
此宏甚至会为包含“CPAzergfzergfer”的单元格着色。我怎么能写一个宏,我只对包含确切字符串的单元格进行着色?
答案 0 :(得分:1)
您可以使用数组指定条件格式的条件,如下所示:
myArray = Array("CPA", "CPN", "CSS", "RL")
For myLoop = LBound(myArray) to UBound(myArray)
With Range("$A$1:$H$17").FormatConditions.Add(Type:=xlTextString, String:=myArray(myLoop), TextOperator:=xlEqual)
.Interior.Color = RGB(105, 191, 44)
End With
Next
我还更改了TextOperator
,因此它应该只选择与文本值匹配的项目,而不是选择包含文本值的项目。
答案 1 :(得分:0)
我打开宏录制器并打开CF对话框并输入以下公式:
=OR(A1="CPA",A1="CPN",A1="CSS",A1="RL")
这是生成的代码的清理版本:
Sub Macro1()
ActiveSheet.Range("A1:H17").FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(A1=""CPA"",A1=""CPN"",A1=""CSS"",A1=""RL"")"
Selection.FormatConditions(1).Interior.Color = RGB(105, 191, 44)
End Sub