设置格式条件不适用于某些范围?

时间:2018-05-16 17:48:49

标签: excel vba excel-vba

我有以下代码:

        i = i + 1
        StrSearchCriteria = "=($W1=" & Chr(34) & "ETF" & Chr(34) & ")"
        With .Range("A:A").FormatConditions
            .Add Type:=2, Formula1:=StrSearchCriteria
            With .Item(i)
                .SetFirstPriority
                With .Interior
                    .PatternColorIndex = xlAutomatic
                    .Color = RGB(225, 225, 0)
                End With
                .StopIfTrue = False
            End With
        End With

这不会设置格式条件。规则在那里,范围,标准是正确的,但格式条件是“无格式设置”。

但是......如果我改变了

With .Range("A:A").FormatConditions

With .Range("E:E").FormatConditions

它有效......

“B:B”,“C:C”,“D:D”都以同样的问题失败。

使用“E:E”(我也尝试了“F:F”工作),然后我可以打开工作簿并手动将范围更改为“A:A”,“B:B”,“C: C“或”D:D“并且有效。

然后我尝试了“A:E”,这也有效。看来,如果我使用E到E列的任何部分(最后一列),它会起作用,但是如果我不包含E中的任何内容并且跟随它失败。

这里完全糊涂了。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

A:D中是否有合并的单元格区域?

答案 1 :(得分:1)

我相信@mer_curius会遇到问题 - 合并的单元格。

所以,作为一种解决方法,因为我只想要A:A来着色,我需要将条件设置为A:E,我遵循该规则设置具有相同标准的规则并且不填充B :的E

有效的代码如下所示:

        i = 1
        StrSearchCriteria = "=($W1=" & Chr(34) & "ETF" & Chr(34) & ")"
        strRange = "A:E"
        With .Range(strRange).FormatConditions
            .Add Type:=2, Formula1:=StrSearchCriteria
            With .Item(i)
                .SetFirstPriority
                With .Interior
                    .PatternColorIndex = xlAutomatic
                    .Color = RGB(225, 225, 0)
                End With
                .StopIfTrue = False
            End With
        End With
        i = i + 1
        StrSearchCriteria = "=($W1=" & Chr(34) & "ETF" & Chr(34) & ")"
        strRange = "B:E"
        With .Range(strRange).FormatConditions
            .Add Type:=2, Formula1:=StrSearchCriteria
            With .Item(i)
                .SetFirstPriority
                With .Interior
                    .Pattern = xlNone
                End With
                .StopIfTrue = False
            End With
        End With