【问题标题】:Using VBA to set Conditional Formatting and Highlighting使用 VBA 设置条件格式和高亮
【发布时间】:2021-01-04 05:21:52
【问题描述】:

如果 K 列小于 L 列,是否可以使用 VBA 设置条件格式以突出显示 Excel 电子表格中的行或单元格?

我在搜索时出现的前几个谷歌页面上有一条路线,但我什么也做不了:(

Sub SpecCheck()
Dim iRow As Range, cell as Range ' I also added the cell as Range
Set iRow = Range("$J$2:$L$50")

For Each cell In iRow
    If cell.Value <> "" And cell.Value > Range("$L$2").Value And cell.Value < Range("$K$2").Value Then
        cell.Interior.Color = RGB(255, 0, 0)
    End If
Next
End Sub

任何帮助将不胜感激

【问题讨论】:

  • 答案是肯定的。即使没有按预期工作,您能否分享您的尝试?
  • @FaneDuru 我在最近的尝试中添加了,感谢您的时间
  • 您所问的内容并未反映在您发布的代码中...所以,您是否需要一些条件格式应用于“K:K”列的切片与“L:L”列.我的理解正确吗?
  • @FaneDuru 是的,所以如果 L 的值小于 K 的值,我希望它突出显示行或仅突出显示有问题的单元格
  • 如果是这样,您检查我的答案代码了吗?它突出显示单元格(如果它不为空)...

标签: vba formatting conditional-statements


【解决方案1】:

请尝试下一个代码:

Sub SpecFormatConditions()
 Dim rng As Range, condition1 As FormatCondition

 Set rng = Range("K2:K10")
  
  With rng
    .FormatConditions.Delete
    Set condition1 = .FormatConditions.Add(Type:=xlExpression, Formula1:="=And(" & _
             .cells(1).Address(0, 0) & "<>"""", " & .cells(1).Address(0, 0) & ">" & _
             .cells(1).Offset(0, 1).Address(0, 0) & ")")
  End With
   With condition1
    .Interior.Color = RGB(255, 0, 0)
   End With
End Sub

要修改更大范围的内部(就列而言),必须使用包含列绝对引用的公式:

Sub SpecFormatConditionsThreColumns()
 Dim rng As Range, condition1 As FormatCondition

 Set rng = Range("J2:L10")
  
  With rng
    .FormatConditions.Delete
    Set condition1 = .FormatConditions.Add(Type:=xlExpression, Formula1:="=And($K2 <>"""", $K2 < $L2)")
  End With
   With condition1
    .Interior.Color = RGB(255, 0, 0)
   End With
End Sub

【讨论】:

  • 再次感谢您的宝贵时间,您非常友善!不幸的是,这并没有突出任何内容:(
  • @PaulDN:这是不可能的,或者我不明白要做什么。如果 K 中的值小于同一行上的 L 值,则上述代码(已测试)应突出显示范围 J:L。这不是你想要的吗?
  • @PaulDN:我没有修改任何东西......如果你找到了合适的测试方法,那就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多