【问题标题】:Conditional Formatting Defined Range条件格式定义范围
【发布时间】:2017-05-16 18:06:43
【问题描述】:

我有以下代码:

Sub ConditionalFormattingNamedRange()                                     
Dim x As Range, Cell As Range

Set x = Range("AALB_Exposure")

For Each Cell In x
    If Cell.Value > Sheets("Overview").Range("E4").Value Then
        Cell.Interior.Color = RGB(0, 255, 0)
    End If
Next 
End Sub

背景信息:如果我定义的范围“AALB_Exposure”中的值大于“概览”表上的单元格 E4,则此公式会使这些值着色。单元格 E4 的值是其他两个单元格的结果。有时这些细胞中的一个会发生变化。我有超过 20 个定义的范围,例如“AALB_Exposure”,所以我更喜欢使用模块。

问题:此模块使所有值都着色。有时“AALB_Exposure”中有一些空白单元格。我想看看这不会发生。这可能吗? 此外,这个模块是静态的,不会在我调整 E4 时修改定义范围内的单元格的颜色。这仅在我运行模块后才会发生。是否可以确保单元格的颜色根据 E4 值的变化立即调整。

谢谢!

----- 编辑 ------

在布鲁斯韦恩的极好的建议下,我稍微改变了我的代码。

Private Sub Workbook_SheetCalculate(ByVal Target As Range, ByVal Sh As Worksheet) 
If Target.Address = "$A$9" Then                    
Application.ScreenUpdating = False    
Dim x As Range, Cell As Range  
Set x = Sh.Range("P1:P150,AD1:AD150,AR1:AR150,BF1:BF150,BT1:BT150,CH1:CH150,CV1:CV150,DJ1:DJ150,DX1:DX150,EL1:EL150")                                                 
For Each Cell In x
If Cell.Value > Sh.Range("A9").Value And Cell.Value <> "" Then
    Cell.Interior.Color = RGB(0, 255, 0)
End If
Next
End If  
Application.ScreenUpdating = True 

结束子

由于每个工作表的命名范围总是相同的,因此以这种方式解决问题可能更好吗?因此,我将位于概览工作表上的单元格 E4 更改为一个单元格,该单元格始终位于每个工作表的相同位置。 但是,这个新模块正确吗?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果您希望在更改 E4 时运行它,您需要将其放入 Worksheet Change 事件中:

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$4" Then
    Application.ScreenUpdating = False
    Dim x As Range, Cell As Range
    
    Set x = Range("AALB_Exposure")
    
    For Each Cell In x
        If Cell.Value > Sheets("Overview").Range("E4").Value And Cell.Value <> "" Then ' added `AND` part to check if cell is not blank
            Cell.Interior.Color = RGB(0, 255, 0)
        End If
    Next
    
    End If
    Application.ScreenUpdating = True
    End Sub
    

    把它放在你想运行它的工作表的工作表模块中。它还会在添加颜色之前检查单元格是否为空白。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多