我正在尝试在VBA for Excel 2013中使用一些条件格式。如果列表验证是"完成"那么代码的执行应该使Col N中的单元格(内部颜色)变为绿色。任何其他时间和白色。如果Col N中的列表验证是" Held"则Col O中的单元格(内部颜色)应该变为红色。任何其他时间都是白色的。
目前,出现的结果是: 1.如果从列表验证中未选择任何内容,则Col N和Col O为白色。 2.当从列表验证中选择任何内容时,Col N变为绿色。 3.当" Held"如果选择了Col N中的任何其他内容,则在Col N中选择并再次变为白色 4.如果在Col O中选择了某些内容,则该单元格变为红色。
我目前的代码(以及我已经注释掉的部分):
'Add conditional format for column N. If Status is "Complete", color Status cell (col N) green (43).
With Worksheets(SheetNum & " - Work").Range("N2:N2000").Select
'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=OR(($N2=""Not Started""),($N2=""In Queue""), ($N2=""In Work""), ($N2=""Held""), ($N2="" "")"
'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
Formula1:="=($N2=""Complete"")"
'With Selection.FormatConditions(1)
'.Interior.ColorIndex = 2
'.StopIfTrue = True
'End With
'End With
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
Formula1:="=($N2=""Complete"")"
With Selection.FormatConditions(1)
.Interior.ColorIndex = 43
'.StopIfTrue = True
End With
End With
'Add conditional format for column O. If Status is "Held", color Held For cell (col O)
'red (3).
'With Worksheets(SheetNum & " - Work").Range("O2:O2000").Select
'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
Formula1:="=OR(($N2=""Not Started""),($N2=""In Queue""), ($N2=""In Work""), ($N2=""Complete""))"
'Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=($N2=""Held"")"
'With Selection.FormatConditions(1)
'.Interior.ColorIndex = 2
'.StopIfTrue = True
'End With
With Worksheets(SheetNum & " - Work").Range("O2:O2000").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
Formula1:="=($N2=""Held"")"
With Selection.FormatConditions(1)
.Interior.ColorIndex = 3
'.StopIfTrue = True
End With
End With
另外,有人可以解释何时使用Operator:= xlNotEqual vs Operator:= xlEqual?这些似乎与我的预期相反。
感谢您的帮助。
答案 0 :(得分:1)
不幸的是,这些列需要动态着色,这就是我尝试使用条件格式的原因。我正在尝试将大约10种条件格式应用于这些表格,这些格式将在整个程序的生命周期中创建。
从好的方面来说,在整天尝试之后,我注意到我在(“”Held“”)之后错过了一个“)”。但它似乎没有使文件正常工作。
答案 1 :(得分:0)
单元格$ N2是否包含实际单词"完成"和#34;举行" ?
如果是这样,这可能会起作用
Sub tester()
For I = 1 To 100 ' or lastused row
If InStr(1, UCase(Sheet6.Range("N" & I).Value), "COMPLETE") > 0 Then
Sheet6.Range("N" & I).Interior.ColorIndex = 43
Else
If InStr(1, UCase(Sheet6.Range("N" & I).Value), "HELD") > 0 Then
Sheet6.Range("N" & I).Interior.ColorIndex = 3
Else
Sheet6.Range("N" & I).Interior.ColorIndex = 2
End If
End If
Next I
End Sub
答案 2 :(得分:0)
我终于想出了正确的代码来获得我想要的东西。
'Add conditional format for column N. If Status is "Complete", color Status cell (col N) green (43).
With Worksheets(SheetNum & " - Work").Range("N2:N2000").Select
Selection.FormatConditions.Add Type:=xlExpression, _
Formula1:="=($N2=""Complete"")"
With Selection.FormatConditions(1)
.Interior.ColorIndex = 43
.StopIfTrue = True
End With
End With