【发布时间】: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 更改为一个单元格,该单元格始终位于每个工作表的相同位置。 但是,这个新模块正确吗?
【问题讨论】: