通过VB6有条件地格式化Excel文档(带有覆盖格式的问题)

伯纳德

我正在运行时创建一个Excel文档,该文档具有一堆我希望有条件格式化的值。从头开始进行各种尝试,以及使用/修改从Excel宏记录器输出的代码,我遇到了与格式化覆盖有关的一致问题。

我在下面发布了一段代码,可以说我已经过测试,以确保我的选择范围有效且适合于我想要有条件格式化的内容。有一些重叠,但是奇怪的是,第一种条件格式仅具有第二种条件格式的一个属性。含义D5:工作表的结尾最终具有绿色字体,而不是应具有的红色字体。注释代码的每个部分都可以使它们独立工作,但是我猜这是进一步以某种方式指定条件格式的问题吗?我尝试了几种不同的情况,下面是经过修改的代码:

编辑(更新代码):

'First conditional format, check sheet for values > 50 and make text red.
With xl.range("D5:" & theLastColumn & lastRow)
  .FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=50"
  With .FormatConditions(1).Font
    .Color = -16383844
    .TintAndShade = 0
  End With
  .FormatConditions(1).StopIfTrue = False
End With


'Second conditional format, check specific row (row 5 in the example) 
'for values > 40, and fill interior with green in addition to dark green text.
With xl.range("D" & Infectivity & ":" & theLastColumn & Infectivity)
  .FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=40"
  With .FormatConditions(2).Font
    .Color = -16752384
    .TintAndShade = 0
  End With
  With .FormatConditions(2).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 13561798
    .TintAndShade = 0
  End With
End With

那么拥有多种条件格式(可能会重叠范围)并且仍然使它们全部按预期发挥作用的最佳方法是什么?我已经尝试过调试太多了,我敢肯定有一些容易被我忽略的事情。我还尝试了几种不同的方法来指定单独的formatconditions(1)和formatconditions(2),但仍然遇到奇怪的问题。

编辑:

我仍然遇到相同问题的VBA代码。

Sub conditionalFormat()
  With Range("D5:BA9")
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=50"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1).Font
      .Color = -16383844
      .TintAndShade = 0
    End With
    .FormatConditions(1).StopIfTrue = False
  End With

  With Range("D9:BA9")
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=40"
    With .FormatConditions(2).Font
      .Color = -16752384
      .TintAndShade = 0
    End With
    With .FormatConditions(2).Interior
      .PatternColorIndex = xlAutomatic
      .Color = 13561798
      .TintAndShade = 0
    End With
    .FormatConditions(2).StopIfTrue = False
  End With    
End Sub

即使将SetFirstPriority设置为适当的(红色文本)条件格式,它仍会以某种方式被覆盖。我在这里想念什么吗?

伯纳德

经过深思熟虑并重新编写了代码,我们得出的结论是,我所做的事情(多个条件重叠)是导致结果混合的原因。在最简单的级别,我能够将.FormatConditions.Delete添加到其他条件格式中,以确保仅应用了一种格式。

更正后的最终代码如下所示:

Dim Infectivity As Long
Infectivity = Application.WorksheetFunction.match("Infectivity", range("A1:" & "A" & lastRow), 0)

With xl.range("D5:" & theLastColumn & lastRow)
    .FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, _
    Formula1:="=50"
    .FormatConditions(.FormatConditions.count).SetFirstPriority
With .FormatConditions(1).Font
    .Color = -16383844
    .TintAndShade = 0
End With

    .FormatConditions(1).StopIfTrue = False
End With

If Infectivity > 0 Then
With xl.range("D" & Infectivity & ":" & theLastColumn & Infectivity)
    .FormatConditions.Delete
    .FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, _
     Formula1:="=40"
With .FormatConditions(1).Font
    .Color = -16752384
    .TintAndShade = 0
End With
With .FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 13561798
    .TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
End If

我的失败与宏记录器有关,这使我错失了格式化这些单元格的理想方法。最好在继续前进之前先进行简化。

非常感谢Siddharth Rout的所有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jqGrid-根据日期值有条件地格式化单元格

来自分类Dev

有条件地格式化范围内的最大值

来自分类Dev

使用区分大小写的文本有条件地格式化整个工作表

来自分类Dev

如何基于引用“移动”单元格的间接公式有条件地格式化单元格

来自分类Dev

如何有条件地格式化多个范围的最大值

来自分类Dev

如何有条件地格式化包含在Tabstrip中的Kendo UI Grid行?

来自分类Dev

如果单元格包含文本,则有条件地格式化整行

来自分类Dev

有条件地格式化Tablix的某些单元格

来自分类Dev

有条件地格式化日志

来自分类Dev

在模板中使用if语句有条件地格式化kendo网格列问题

来自分类Dev

有条件地格式化Shiny中的rHandsontable中的空单元格

来自分类Dev

如何根据单元格的值有条件地格式化[gt]表中的单元格

来自分类Dev

如何有条件地格式化JavaFX ComboBoxTableCell标签

来自分类Dev

如何有条件地格式化全行

来自分类Dev

有条件地格式化带有箭头指示符的单元格无法正常工作

来自分类Dev

根据其他单元格的值有条件地格式化单词

来自分类Dev

在相同条件下有条件地格式化多行

来自分类Dev

有条件地格式化列中值的第一个实例

来自分类Dev

如何有条件地格式化图表上的数据点

来自分类Dev

如何仅将符合条件的第一行有条件地格式化?

来自分类Dev

根据公式有条件地格式化单元格的子集

来自分类Dev

如何仅在Excel中有条件地格式化子字符串

来自分类Dev

有条件地格式化 JSON

来自分类Dev

如果提取的值是 > 数值,我如何有条件地格式化?

来自分类Dev

根据不同的范围有条件地格式化范围

来自分类Dev

有条件地格式化锚定到条件单元格的区域

来自分类Dev

“如何有条件地格式化数据表中的字母?

来自分类Dev

如何根据表单的状态有条件地格式化测试?

来自分类Dev

根据来自查询的值有条件地格式化字体颜色

Related 相关文章

  1. 1

    jqGrid-根据日期值有条件地格式化单元格

  2. 2

    有条件地格式化范围内的最大值

  3. 3

    使用区分大小写的文本有条件地格式化整个工作表

  4. 4

    如何基于引用“移动”单元格的间接公式有条件地格式化单元格

  5. 5

    如何有条件地格式化多个范围的最大值

  6. 6

    如何有条件地格式化包含在Tabstrip中的Kendo UI Grid行?

  7. 7

    如果单元格包含文本,则有条件地格式化整行

  8. 8

    有条件地格式化Tablix的某些单元格

  9. 9

    有条件地格式化日志

  10. 10

    在模板中使用if语句有条件地格式化kendo网格列问题

  11. 11

    有条件地格式化Shiny中的rHandsontable中的空单元格

  12. 12

    如何根据单元格的值有条件地格式化[gt]表中的单元格

  13. 13

    如何有条件地格式化JavaFX ComboBoxTableCell标签

  14. 14

    如何有条件地格式化全行

  15. 15

    有条件地格式化带有箭头指示符的单元格无法正常工作

  16. 16

    根据其他单元格的值有条件地格式化单词

  17. 17

    在相同条件下有条件地格式化多行

  18. 18

    有条件地格式化列中值的第一个实例

  19. 19

    如何有条件地格式化图表上的数据点

  20. 20

    如何仅将符合条件的第一行有条件地格式化?

  21. 21

    根据公式有条件地格式化单元格的子集

  22. 22

    如何仅在Excel中有条件地格式化子字符串

  23. 23

    有条件地格式化 JSON

  24. 24

    如果提取的值是 > 数值,我如何有条件地格式化?

  25. 25

    根据不同的范围有条件地格式化范围

  26. 26

    有条件地格式化锚定到条件单元格的区域

  27. 27

    “如何有条件地格式化数据表中的字母?

  28. 28

    如何根据表单的状态有条件地格式化测试?

  29. 29

    根据来自查询的值有条件地格式化字体颜色

热门标签

归档