在Excel 2007中使用VBA添加条件格式时停止更改字体颜色

时间:2014-06-04 14:34:30

标签: excel vba excel-vba excel-2007 conditional-formatting

所以我将条件格式添加到用户使用VBA动态创建的单元格列。我遇到的问题是,添加第一个格式后,任何后续格式将更改已格式化单元格的字体颜色。已经从主源复制的单元格中存在一些条件格式,当主格式为cell = 0或&#34时选择一个:"在黄色单元格中是蓝色文本下面是我到目前为止的代码:

With Range(Ltrs & 36, Ltrs & 41)
    .FormatConditions.Add xlExpression, Formula1:="= $" & Ltrs & "$33 <> ""Custom" & OCV + 1 & """"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1)
        .Interior.Color = vbBlack
        .Font.Color = vbBlack
        .StopIfTrue = False
    End With
End With

With Range(Ltrs & 42, Ltrs & 44)
    .FormatConditions.Add xlExpression, Formula1:="=AND($" & Ltrs & "$29<>Repack1, $" & Ltrs & "$29<>Repack2)"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1)
        .Interior.Color = vbBlack
        .Font.Color = vbBlack
        .StopIfTrue = False
    End With
End With

With Range(Ltrs & 45)
    .FormatConditions.Add xlExpression, Formula1:="=AND($" & Ltrs & "$29<>Repack1, $" & Ltrs & "$29<>Repack2)"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1)
        .Interior.Color = vbBlack
        .Font.Color = vbBlack
        .StopIfTrue = False
    End With
End With

With Range(Ltrs & 47)
    .FormatConditions.Add Type:=xlTextString, String:="Enter", TextOperator:=xlContains
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1)
        .Interior.Color = 13421823 'Light Red
        .Font.Color = -14614363 'Dark Red/Brown
        .StopIfTrue = False
    End With
End With

这导致所有具有0的单元格用红色文本格式化,所有单元格用&#34;选择一个:&#34;单元格包含值&#34;输入&#34;有蓝色文字。奇怪的是(至少对我来说)内部单元格颜色仍然是正确的,它只是字体颜色错误。

1 个答案:

答案 0 :(得分:2)

尝试类似这样的地方,其中start是您要开始条件格式的字符,而Length是您需要格式化的字符数。

  

范围(“B2”,“H11”)。字符(开始,长度).Font.Size = 14

     

范围(“B2”,“H11”)。字符(开始,长度).Font.Bold = True

     

范围(“B2”,“H11”)。字符(开始,长度).Font.Underline = True