条件格式,尽管没有应用格式

时间:2018-07-04 13:52:02

标签: excel vba excel-vba conditional-formatting

首先,这是我参加过的最好的论坛之一。我最近才创建一个帐户,但是我已经从该论坛中学到了很多。

按照标题,我的问题是关于条件格式的。如下面的代码所示,到目前为止,我已经将背景色用作格式。但是,运行此宏后,尽管将条件应用于选定的单元格,但没有对其进行格式化。当我单击“管理现有规则”时,条件就存在了,但出现了“未设置格式”。如此处所示:Screenshot

Sub tableSetup()

    Dim tbl As ListObject

    Set tbl = ActiveSheet.ListObjects.Add(SourceType:=xlSrcRange, Source:=Selection, xllistobjecthasheaders:=xlYes, tablestylename:="Custom")

    cellStr = tbl.DataBodyRange.Cells(1).Address
    cellStr = Replace(cellStr, "$", "")
    formulaStr = "=IsFormula(" & cellStr & ")"

    With tbl.DataBodyRange
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:=formulaStr
        .FormatConditions.Interior.Color = RGB(191, 191, 191)
    End With

End Sub

1 个答案:

答案 0 :(得分:2)

您没有告诉它要将格式应用于哪个FormatConditions。

With tbl.DataBodyRange
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:=formulaStr
    .FormatConditions(.FormatConditions.Count).Interior.Color = RGB(191, 191, 191)
End With

您已经合法地删除了所有其他.FormatConditions,可以将其称为.FormatConditions(1),但是当您添加.FormatConditions时,它始终是队列中的最后一个,直到您执行.FormatConditions( .FormatConditions.Count).SetFirstPriority,将其移到队列的前面。

您还可以使用通过.FormatConditions.Add创建的对象来形成嵌套的With ... End With块,以正确引用多个操作。

With tbl.DataBodyRange
    .FormatConditions.Delete
    with .FormatConditions.Add(Type:=xlExpression, Formula1:=formulaStr)
        .Interior.Color = RGB(191, 191, 191)
        .SetFirstPriority
    end with
End With